[英]PHP/Angularjs/Post data empty
我確實在表單中選擇兩個字段( month and origin
)並將其提交給AngularJS
控制器,我使用的是與Ionic框架打包的1.3.13版本。
觀察一個console.log
then
方法中正確填充值。
返回的q.promisse
具有此值: [object, object]
。
HTML
模板的列表未填充rigth期望值。
這些值不會填充PHP API
的PHP POST
變量。
我怎樣才能填充POST
數據???
在我的模板中,我提交search
方法:
<form method="post" ng-controller="AcpSearchCtrl" ng-submit="search(data)">
<select name="month" ng-model="data.month">
<option value="01">January</option>
而在我的控制器o不要使用http.post
和promisse
:
.controller('AcpSearchCtrl', function($scope, ApiAcpSearch, $ionicLoading, $timeout, $http, ApiAcpEndpoint, $q) {
$scope.search = function(data) {
$ionicLoading.show({
noBackdrop: false,
template: '<p>searching ...</p>'
});
var q = $q.defer();
$scope.formData = {};
$scope.submission = false;
var param = function(data) {
var returnString = '';
for (d in data){
if (data.hasOwnProperty(d))
returnString += d + '=' + data[d] + '&';
}
return returnString.slice( 0, returnString.length - 1 );
};
console.log('formData : '+$scope.formData);
return $http({
url:ApiAcpEndpoint.url,
data : param($scope.formData),
method : 'POST',
headers : {'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'}
})
.then(function(data) {
q.resolve(data);
var acp = {};
acp.qdata = [ data ];
$scope.data = acp.qdata;
$ionicLoading.hide();
return q.promise;
});
}
})
默認情況下,AngularJS以JSON格式發送數據。 你不會在常規的PHP全局變量中找到它($ _REQUEST,$ _POST或$ _GET)。
您有兩種方法可以解決此問題:
為AngularJS全局設置默認的Content-Type (僅在請求不起作用之前設置標題)。
var app = angular.module("app", []);
app.config(['$httpProvider', function($httpProvider) {
$httpProvider.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded";
$httpProvider.defaults.headers.common["X-Requested-With"] = "XMLHttpRequest";
}]);
另一種方法是你處理AngularJS在PHP中發送數據的方式:
$angularJSData = json_decode(file_get_contents("php://input"));
// json_decode will create an object so if you need in array format
$angularJSData = (array)$angularJSData;
有了這些知識,您就可以創建一個函數甚至是您自己的全局函數
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.