angular $http 提交post后台无法获取;修改方法。
在项目到root module加上以下代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
// Your app's root module...
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<value.length; ++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;
}];
});
|
原理是jquery的contentType 是
1
|
application/x-www-form-urlencoded
|
post的数据会转换成name=123&title=123
angularjs是
1
|
application/json
|
所以上面代码是改了这两处。