簡體   English   中英

Angular $ resource服務以表單數據而不是請求有效載荷發送數據

[英]Angular $resource service send data in Form Data instead of Request Payload

我面對有角度的$ resource服務的問題。

我試圖以不同的方式使用某些表單數據來創建REST API。

但是,每次我使用該API時,要么最終要么以QueryParams的形式發送數據,要么最終請求有效載荷。

我實際上需要將數據以編碼形式發送。

我的代碼如下所示:

var headers = {
            'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
        };


var save = function (url, params, headers, successcb, successParams, errorcb, errorParams) {
            var promise = $resource(url, null, {
                upload: {
                    method: methodPost,
                    headers: headers
                }
            }).save({}, params).$promise;

            promise.then(function (response) {
                successcb(response.data, successParams);
            }, function (error) {
                errorcb(error, errorParams);
            });
        };

我已經附上了角度ajax請求的快照。

在此處輸入圖片說明

參考上面的圖片,盡管我設置了x-www-form-urlencoded,但內容類型實際上是顯示application / json。 因此,數據將在RequestPayload中而不是FormData中輸出。

下面是jQuery ajax調用的另一幅圖像。

在此處輸入圖片說明

在這里,您可以清楚地看到content-type是x-www-form-urlencoded,並且工作正常。

我的疑問是,$ resource沒有發送適當的標頭,因此數據以RequestPayload的形式發送。

有沒有人遇到過這個問題?

任何幫助表示贊賞。

謝謝

您可以為此使用轉換請求,如下所示。

var transform = function(data) {
        return $.param(data);
    }

    var headers = {
        'Content-Type' : 'application/x-www-form-urlencoded;charset=UTF-8'
    };

    var save = function(url, params, headers, successcb, successParams, errorcb, errorParams) {
        var promise = $resource(url, null, {
            upload : {
                method : methodPost,
                headers : headers,
                transformRequest : transform

            }
        }).save({}, params).$promise;

        promise.then(function(response) {
            successcb(response.data, successParams);
        }, function(error) {
            errorcb(error, errorParams);
        });
    };

這是由於$http服務$resoucetransformRequest方法所依賴,該方法始終將Content-Type標頭設置為application/json

要糾正此問題,您需要禁用它或將其更改為使用將規格設置為所需功能的功能。

此處的好文章: http : //www.bennadel.com/blog/2615-posting-form-data-with-http-in-angularjs.htm

嘗試:

var promise = $resource(url, null, {
    upload: {
        method: methodPost,
        headers: headers,
        transformRequest: []        
    },
}).save({}, params).$promise;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM