簡體   English   中英

AngularJs多部分$ http請求問題

[英]AngularJs Multipart $http Request Issue

由於某種原因,我無法使[object Object]脫離表單。 我正在使用此處的hte方法: http : //badwing.com/multipart-form-data-ajax-uploads-with-angularjs/#comment-431

我發送的JSON非常復雜(示例):

{
    "challenge_id": 262,
    "priority": "0",
    "cause_id": "29",
    "timestamp": "2013-11-29 12:06:01",
    "translations": {
        "en": {
            "name": "asdfgsfd",
            "description": "sdfghfs"
        }
    },
    "actions": {
        "1": {
            "type": "chek",
            "step": "1",
            "translations": {
                "en": {
                    "description": "adsfas"
                }
            }
        },
        "2": {
            "type": "chek",
            "step": "2",
            "translations": {
                "en": {
                    "description": "fsdgsd"
                }
            }
        }
    }
}

我的回答如下:

Content-Disposition: form-data; name="challenge_json"

[object Object]

我的要求看起來像這樣:

        return $http.post( REQUEST_URL + '/ENDPOINT', {challenge_json:data}, {
        transformRequest: function(data) {
            console.log(data);
            var fd = new FormData();
            angular.forEach(data, function(value, key) {
                fd.append(key, value);
            });
            console.log(fd);
            return fd;
        }

我通過httpProvider配置更改來修改標頭。 但是,嘗試將其按順序進行操作並獲得相同的結果。 任何幫助,將不勝感激。

看來您已經接近解決方案,但是需要在傳遞給$ http的選項中取消設置“ content-type”標頭,以便xmlhttprequest對象可以在其send方法上獲取formdata時自動添加它。

https://groups.google.com/d/topic/angular/MBf8qvBpuVE/discussion

在這里看到游樂場http://jsfiddle.net/Lv1n55db/1/

(直接提供FormData對象和無操作轉換,或者您在transformRequest中提供普通數據對象並將其轉換為FormData的方式沒有顯着差異,關鍵在標頭選項中)

headers:{'Content-Type':undefined},

它可能會因不同的瀏覽器和不同的angularjs版本而異。 至少在不需要文件字段等情況下,一種更確定和穩定的方法可能是不使用本機FormData,而是實現序列化以自己編寫字符串,就像FormData polyfills那樣。

暫無
暫無

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

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