在cordova開發(fā)的時(shí)候使用到了$http的post方法,傳遞的參數(shù)服務(wù)端怎么都接收不到,搜索了下,發(fā)現(xiàn)使用AngularJS通過(guò)POST傳遞參數(shù)還是需要設(shè)置一些東西才可以!
創(chuàng)新互聯(lián)2013年至今,先為石家莊等服務(wù)建站,石家莊等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為石家莊企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
1、不能直接使用params
例如:
$http({ method: "POST", url: "http://192.168.2.2:8080/setId", params: { cellphoneId: "b373fed6be325f7"} }).success();
當(dāng)你這樣寫的時(shí)候它會(huì)把id寫到url后面:
http://192.168.2.2:8080/setId?cellphoneId=b373fed6be325f7"
會(huì)在url后面添加"?cellphoneId=b373fed6be325f7",查了些資料發(fā)現(xiàn)params這個(gè)參數(shù)是用在GET請(qǐng)求中的,而POST/PUT/PATCH就需要使用data來(lái)傳遞;
2、直接使用data
$http({ method: "POST", url: "http://192.168.2.2:8080/setId", data: { cellphoneId: "b373fed6be325f7" } }).success();
這樣的話傳遞的,是存在于Request Payload中,后端無(wú)法獲取到參數(shù)
這時(shí)發(fā)現(xiàn)Content-Type:application/json;charset=UTF-8,而POST表單請(qǐng)求提交時(shí),使用的Content-Type是application/x-www-form-urlencoded,所以需要把Content-Type修改下!
3、修改Content-Type
$http({ method: "POST", url: "http://192.168.2.2:8080/setId", data: {cellphoneId: "b373fed6be325f7"}, headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }).success();
這時(shí)數(shù)據(jù)是放到了Form Data中但是發(fā)現(xiàn)是以對(duì)象的形式存在,所以需要進(jìn)行序列化!
4、對(duì)參數(shù)進(jìn)行序列化
$http({ method: "POST", url: "http://192.168.2.2:8080/setId", data: {cellphoneId: "b373fed6be325f7"}, headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, transformRequest: function(obj) { var str = []; for (var s in obj) { str.push(encodeURIComponent(s) + "=" + encodeURIComponent(obj[s])); } return str.join("&"); } }).success();
以上這篇AngularJS $http post 傳遞參數(shù)數(shù)據(jù)的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持創(chuàng)新互聯(lián)。