但是jQuery的post明显比angularjs的要简单一些,人性化一些。
两者看起来没什么区别,用angularjs的$http提交的数据,在php服务器端却无法通过$_REQUEST/$_POST获取到。
这是因为两者的post对header的处理有所不同……jQuery会把作为JSON对象的myData序列化, 而Angular不会。
解决方案:
修改Angular的$httpProvider的默认处理(最完美的解决方案)
angular.module('MyModule', [], function ($httpProvider) {
// Use x-www-form-urlencoded Content-Type
$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8' ;
/* *
* The workhorse; converts an object to x-www-form-urlencoded serialization.
* @param {Object} obj
* @return {String}
*/
var param = function (obj) {
var query = '' , name, value, fullSubName, subName, subValue, innerObj, i;
for (name in obj) {
value = obj[name];
if (value instanceof Array) {
for (i=0; i i) {
subValue = value[i];
fullSubName = name + '[' + i + ']' ;
innerObj = {};
innerObj[fullSubName] = subValue;
query += param(innerObj) + '&' ;
}
}
else if (value instanceof Object) {
for (subName in value) {
subValue = value[subName];
fullSubName = name + '[' + subName + ']' ;
innerObj = {};
innerObj[fullSubName] = subValue;
query += param(innerObj) + '&' ;
}
}
else if (value !== undefined && value !== null )
query += encodeURIComponent(name) + '=' + encodeURIComponent(value) + '&' ;
}
return query.length ? query.substr(0, query.length - 1 ) : query;
};
// Override $http service's default transformRequest
$httpProvider.defaults.transformRequest = [ function (data) {
return angular.isObject(data) && String(data) !== '[object File]' ? param(data) : data;
}];
});
查看更多关于angular的post传参后台php无法接收-范丁文的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did115566