Angularjs中$http以post请求通过消息体传递参数的实现方法
本文实例讲述了Angularjs中$http以post请求通过消息体传递参数的方法。分享给大家供大家参考,具体如下:
Angularjs中,$http以post在消息体中传递参数,需要做以下修改,以确保消息体传递参数的正确性。
一、在声明应用的时候进行设置:
varhttpPost=function($httpProvider){
/*******************************************
说明:$http的post提交时,纠正消息体
********************************************/
//Usex-www-form-urlencodedContent-Type
$httpProvider.defaults.headers.post['Content-Type']='application/x-www-form-urlencoded;charset=utf-8';
/*
*Theworkhorse;convertsanobjecttox-www-form-urlencodedserialization.
*@param{Object}obj
*@return{String}
*/
varparam=function(obj){
varquery='',name,value,fullSubName,subName,subValue,innerObj,i;
for(nameinobj){
value=obj[name];
if(valueinstanceofArray){
for(i=0;i<value.length;++i){
subValue=value[i];
fullSubName=name+'['+i+']';
innerObj={};
innerObj[fullSubName]=subValue;
query+=param(innerObj)+'&';
}
}elseif(valueinstanceofObject){
for(subNameinvalue){
subValue=value[subName];
fullSubName=name+'['+subName+']';
innerObj={};
innerObj[fullSubName]=subValue;
query+=param(innerObj)+'&';
}
}elseif(value!==undefined&&value!==null)
query+=encodeURIComponent(name)+'='+encodeURIComponent(value)+'&';
}
returnquery.length?query.substr(0,query.length-1):query;
};
//Override$httpservice'sdefaulttransformRequest
$httpProvider.defaults.transformRequest=[
function(data){
returnangular.isObject(data)&&String(data)!=='[objectFile]'?param(data):data;
}
];
};
varngApp=angular.module('wtApp',['ngCookies'],httpPost);
二、调用$httppost
$http({
method:'POST',
url:'GetData.ashx',
params:{id:'1002'},//params作为url的参数
data:{keyName:'qubernet'}//作为消息体参数
},function(data){
});
希望本文所述对大家AngularJS程序设计有所帮助。