您好,登錄后才能下訂單哦!
在cordova開發的時候使用到了$http的post方法,傳遞的參數服務端怎么都接收不到,搜索了下,發現使用AngularJS通過POST傳遞參數還是需要設置一些東西才可以!
1、不能直接使用params
例如:
$http({ method: "POST", url: "http://192.168.2.2:8080/setId", params: { cellphoneId: "b373fed6be325f7"} }).success();
當你這樣寫的時候它會把id寫到url后面:
http://192.168.2.2:8080/setId?cellphoneId=b373fed6be325f7"
會在url后面添加"?cellphoneId=b373fed6be325f7",查了些資料發現params這個參數是用在GET請求中的,而POST/PUT/PATCH就需要使用data來傳遞;
2、直接使用data
$http({ method: "POST", url: "http://192.168.2.2:8080/setId", data: { cellphoneId: "b373fed6be325f7" } }).success();
這樣的話傳遞的,是存在于Request Payload中,后端無法獲取到參數
這時發現Content-Type:application/json;charset=UTF-8,而POST表單請求提交時,使用的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();
這時數據是放到了Form Data中但是發現是以對象的形式存在,所以需要進行序列化!
4、對參數進行序列化
$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 傳遞參數數據的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。