angularjs中$http模組傳送post請求request payload轉form data

weixin_33763244發表於2017-09-03

背景: 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的方式了,然後就沒有然後了。。。

相關文章