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程序设计有所帮助。