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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

一、傳遞參數過程中POST會出問題,問題來源:

我們都知道向后臺傳參可以使用get、post,其形式類似于name=iyy&id=001 。但是在angular中卻發現使用$http post 進行異步傳輸的過程中后臺是接收不到數據的,其實這個問題就是因為請求頭的緣故。在angular中默認的請求頭是“Content-Type":"application/json",也就是說傳遞參數是使用json格式。但后臺默認的卻是Content-Type': 'application/x-www-form-urlencoded'。因此在這樣的情況下后臺接收到的數據就會是空的。

那么為什么使用get形式就可以傳參呢?因為get這個鍵的值是一個字符串map或對象,會被轉換成查詢字符串追加在URL后面。如果不是字符串,會被json序列化,可以理解為在get中參數的傳遞是直接追加在utl后面的,那么此時參數形式{“id”:"1","name":"yy"}會被轉化成id=1&name=yy追加在url后面,后臺就直接獲取到了。

Jquery、原生Ajax:

頭: Content-Type: application/x-www-form-urlencoded 傳輸數據 都認(經典所有服務器都認)

Angular Js:

application/json 新潮--部分服務器默認不支持

解決方法:

配置angularJs 庫

配置AngularJs的POST方式

a. 修改請求頭:

$http({

url,

method,

data,

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

})

b: 修改傳遞內容:

transformRequest 傳進去一個obj,返回一個編碼編號

$http({

transformRequest(obj){

return "要傳輸的字符串"

//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: 完整寫法(一個完整寫法、直接在module配置一次即可):

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

//方法,修改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;

})

})

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。