日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

angular ajax get post 参数,Angular的Post 传递参数问题及解决方法

發(fā)布時(shí)間:2023/12/1 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 angular ajax get post 参数,Angular的Post 传递参数问题及解决方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、傳遞參數(shù)過程中POST會(huì)出問題,問題來源:

我們都知道向后臺(tái)傳參可以使用get、post,其形式類似于name=iyy&id=001 。但是在angular中卻發(fā)現(xiàn)使用$http post 進(jìn)行異步傳輸?shù)倪^程中后臺(tái)是接收不到數(shù)據(jù)的,其實(shí)這個(gè)問題就是因?yàn)檎?qǐng)求頭的緣故。在angular中默認(rèn)的請(qǐng)求頭是“Content-Type":"application/json",也就是說傳遞參數(shù)是使用json格式。但后臺(tái)默認(rèn)的卻是Content-Type': 'application/x-www-form-urlencoded'。因此在這樣的情況下后臺(tái)接收到的數(shù)據(jù)就會(huì)是空的。

那么為什么使用get形式就可以傳參呢?因?yàn)間et這個(gè)鍵的值是一個(gè)字符串map或?qū)ο?#xff0c;會(huì)被轉(zhuǎn)換成查詢字符串追加在URL后面。如果不是字符串,會(huì)被json序列化,可以理解為在get中參數(shù)的傳遞是直接追加在utl后面的,那么此時(shí)參數(shù)形式{“id”:"1","name":"yy"}會(huì)被轉(zhuǎn)化成id=1&name=yy追加在url后面,后臺(tái)就直接獲取到了。

Jquery、原生Ajax:

頭: Content-Type: application/x-www-form-urlencoded 傳輸數(shù)據(jù) 都認(rèn)(經(jīng)典所有服務(wù)器都認(rèn))

Angular Js:

application/json 新潮--部分服務(wù)器默認(rèn)不支持

解決方法:

配置angularJs 庫

配置AngularJs的POST方式

a. 修改請(qǐng)求頭:

$http({

url,

method,

data,

headers:{ 'Content-Type':'application/x-www-form-urlencoded ' }

})

b: 修改傳遞內(nèi)容:

transformRequest 傳進(jìn)去一個(gè)obj,返回一個(gè)編碼編號(hào)

$http({

transformRequest(obj){

return "要傳輸?shù)淖址?#34;

//obj=>{a:"12", b:"5"}

//return "a=12&b=5"

let att= [];

for(let name in obj){

arr.push(`$(name)=$(obj[name])`);

}

return arr.join('&');

}

})

如把{a: 12, b:5 } =>"a=12&b=5"

c: 完整寫法(一個(gè)完整寫法、直接在module配置一次即可):

var app = angular.module('app',[]);

//方法,修改ng的請(qǐng)求頭

app.config(function($httpProvider){

$httpProvider.defaults.transformRequest=function(obj){

let arr =[];

for(let name in obj){

arr.push(`${name}=${obj[name]}`);

}

return arr.join('&');

};

$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';

});

app.controller('ctrl',function($scope,$resource,$q,$http){

var defer = $q.defer();

var promise = defer.promise;

$http({

method: "post",

data:$.param({"id":"1","name":"jyy"}),

url:"1.php"

}).success(function(data){

defer.resolve(data);

});

promise.then(function(data){

$scope.data = data;

})

})

總結(jié)

以上是生活随笔為你收集整理的angular ajax get post 参数,Angular的Post 传递参数问题及解决方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。