2015-06-09 26 views
0

你好我是新來的角,我一直在試圖提交一個表單,並檢查我的MySQL數據庫,如果用戶存在。我所有的代碼都可以工作,因爲當我將json直接放入我的php/codeigniter代碼中時,我得到了即時尋找的員工。我認爲我的問題是將數據從我的角度轉移到php。角度如何做一個表單提交與AJAX

這是我的HTML

<div class="login-content"> 
    <form ng-controller="loginController" ng-submit="processForm()" class='margin-bottom-0' accept-charset="utf-8"> 
     <div class="form-group m-b-20"> 
      <input type="text" ng-model="formData.AccessKey" required="true" id="AccessKey" class="form-control input-lg" placeholder="Access Key" /> 
     </div> 
     <div class="form-group m-b-20"> 
      <input type="password" ng-model="formData.Password" required="true" id="Password" class="form-control input-lg" placeholder="Password" /> 
     </div> 
     <div class="login-buttons"> 
      <button type="submit" name="IsPostBack" value="true" class="btn btn-primary btn-block btn-lg">Login</button> 
     </div> 
    </form> 
</div> 

app.controller('loginController', function($scope, $http){ 

$scope.processForm = function(){ 
    $http({ 
     method : 'GET', 
     url  : 'http://localhost:8888/employees/login', 
     data : $scope.formData = {}, 
     header : {'Content-Type': 'application/x-www-form-urlencoded'} 
    }) 
     .success(function(data){ 
      console.log(data); 

     }) 
}; 

}); 

這是我的PHP IM使用笨框架是我的角的代碼。這是控制器

public function login() 
{ 
    $this->employees_model->login(); 
} 

這是我在PHP模型

public function login() 
{ 
    $data = $this->input->get('data'); 

    //$data = '{"AccessKey":"[email protected]","Password":"candoa21"}'; 
    $data = json_decode($data); 

    $AccessKey = $data->AccessKey; 
    $Password = $data->Password; 

    $sql = "SELECT * 
      FROM Employees 
      WHERE Employees.AccessKey = ? 
      AND Employees.Password = ?"; 

    $query = $this->db->query($sql, array($AccessKey, $Password)); 

    if($query->num_rows() > 0) 
    { 
     $query = json_encode($query->result()); 
     return $this->output 
      ->set_content_type('application/json') 
      ->set_output($query); 
    } 
    else 
    { 
     return 'Invalid AccessKey Or Password'; 
    } 
} 

這是錯誤即時得到

試圖讓非對象的財產線173

線173 $ AccessKey = $ data-> AccessKey;

所以不知何故,我不認爲即時傳遞值正確。

+0

能否請您在登錄角本,看看你逝去的是什麼? '$ scope.formData' –

+0

我在console.log中得到這個錯誤:XMLHttpRequest無法加載http:// localhost:8888/employees/login。請求的資源上沒有「Access-Control-Allow-Origin」標題。原因'http:// app:8888'因此不被允許訪問。 http:// app:8888是我目前的應用程序,我試圖通過http:// localhost:8888/employees/login獲取信息。 formData傳遞{「AccessKey」:「[email protected]」,「密碼」:「candoa21」} – user3862830

+0

閱讀以下內容:http://en.wikipedia.org/wiki/Cross-origin_resource_sharing –

回答

0

添加這個頭看看會發生什麼:

{"Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"} 
0

首先,在你的角下一行代碼將始終發送請求之前重置您的FORMDATA:

data : $scope.formData = {}, 

因此,將其更改爲

data : $scope.formData, 

其次,我不認爲數據配置與GET方法一起使用。嘗試POST,而不是如果可能的話:

method : 'POST', 

我不知道你用的是什麼PHP框架,但它似乎對我好。通過簡單地解決上述問題,至少這些談話在我的案例中起到了作用。

也許你想,當你面對今後發生類似的問題,首先登錄你的服務器端的所有請求:

Log::info($this->input->all()); // Something like this? I'm guessing. 
+0

我設法修復標題問題,但我可以將值傳遞給php。我試圖獲得非對象的屬性。所以我想我不會發送任何東西。我改變我的代碼,但仍然無法通過價值。 – user3862830

+0

什麼是json_decode之前的$ data數據,空字符串? – KinoP