2014-12-08 86 views
1

我在我的應用程序中有一個PHP服務api/add,您可以通過POST將它傳遞給rqnamerq告訴服務要執行什麼功能,所以在我的示例中定義了addCity,它將一個城市插入到數據庫中,並且name是城市的名稱。

所以,這就是說,這是我的角碼。我正在用ngRoute定義一個角度模塊。

whereApp.controller('AddCityCtrl', function($scope, $http) { 

    $scope.addCity = function() { 

    $http({ 
     method: "POST", 
     url: '/api/add/', 
     data: { rq:'addCity', name: $scope.name }, 
     headers: {'Content-Type': 'application/x-www-form-urlencoded'} 
     }).success(function (data, status, headers, config) { 
      console.log(data); 
     }); 

    /* 
     $.ajax({ 
      url: "/api/add/", 
      type: "POST", 
      data: { rq: 'addCity', name: $scope.name }, 
      dataType: "json" 
     }) 
     .success(function(data) { 
      console.log(data);  
     }); 
    */ 
    } 
}); 

這是問題所在。 ajax請求(被註釋掉的jQuery風格)起作用。我想要使​​用角度風格,好吧,這就是我正在使用的以及我想要學習的更多內容。 jQuery ajax調用讓我回到從服務器端獲得的成功消息,並且$ http方法表示未定義rq變量,我正在通過$_POST['rq']訪問該變量。

我已經在Google上做了一些研究,但到目前爲止只有想出headers: {'Content-Type': 'application/x-www-form-urlencoded'}就像this post這樣說。

任何人都可以告訴我這兩個Ajax調用之間有什麼區別嗎(或者如果還有其他我沒有考慮過的)?

回答

2

因爲它是在PHP發送JSON數據,你不能用簡單的$ _ POST得到它,你需要做這樣的東西,得到這個發佈的數據

$data=file_get_contents('php://input'); 
$dataobj= json_decode($data); 

在這裏,你得到的數據先然後解碼它從json到正常對象