https://www.jb51.net/article/89932.htm
Angularjs中,$http以post在消息体中传递参数,需要做以下修改,以确保消息体传递参数的正确性。
一、在声明应用的时候进行设置:
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
|
var
httpPost =
function
($httpProvider) {
/*******************************************
说明:$http的post提交时,纠正消息体
********************************************/
// 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;
}
];
};
var ngApp = angular.module('
wtApp
', ['
ngCookies'], httpPost);
|
二、调用$http post
1
2
3
4
5
6
7
|
$http({
method:
'POST'
,
url:
'GetData.ashx'
,
params: { id:
'1002'
},
//params作为url的参数
data: { keyName:
'qubernet'
}
//作为消息体参数
},
function
(data) {
});
|
希望本文所述对大家AngularJS程序设计有所帮助。