背景: ionic+ angularjs+ cordova
在開發一個證書照片刪除的時候,後端提供了一個post介面,需要前端將資料轉化成form data。而在angularjs中,如果直接用post方式,傳送資料是以Request Payload而不是以Form Data。
$http({
method: 'POST',
url: url,
data: data
}).success(function () {});
執行結果: chrome
這樣後端是無法獲取的。
解決辦法:
1、對post進行配置
$http({
method: 'POST',
url: url,
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
transformRequest: function(obj) {
var str = [];
for(var p in obj)
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
return str.join("&");
},
data: xsrf
}).success(function () {});
這樣就能轉化成form data資料讓後端接收了。
2、使用jquery對資料進行處理
var data = $.param(data)
結尾:
最後沒有用以上的任何一種方法解決。因為整個專案是用websocket方式(除了實名認證和新增證書時考慮斷點續傳用了http方式),經過一番套路,總監讓後端改成用websocket的方式了,然後就沒有然後了。。。