2016-12-30 55 views
2

我有一個要發送到服務器的文件。該文件正在FormData對象中傳遞,而不是路徑URI。這是我使用的代碼:嘗試使用jQuery.ajax發送FormData時出錯

let formData = new FormData(); 
formData.append('enctype', 'multipart/form-data'); 
formData.append('mode', 'fileInsert'); 
formData.append('conId', 'asdasd5535asf'); 
formData.append('user', 'user2422424'); 
formData.append('filesNumber', 1); 
formData.append('msgType', 'fil'); 
formData.append('file0', file); 

$.ajax({ 
    data: formData, 
    success: function (a, s) { 
     debugger; 
    } 
}); 

當代碼到達$.ajax稱呼它拋出這個錯誤:

Uncaught TypeError: Illegal invocation

有什麼不對?請注意,jQuery AJAX的配置較早,包括帖子類型,URL等。

+0

嘗試添加下列屬性'$ .ajax'電話:'的contentType:假的,過程數據:FALSE' –

+0

讓我問我的服務器的傢伙如果有任何東西正在收到,它現在不會拋出錯誤 –

+0

它的工作原理,@RoryMcCrossan請給出答案並解釋它的作用 –

回答

1

您需要在您的AJAX請求設置以下屬性:

contentType: false, 
processData: false 

設置contentTypefalse停止被設置content-type頭。同樣,將processData設置爲false將停止正在編碼的請求的內容,這在發送FormData對象時需要。

關於這些和其他$.ajax屬性的詳細信息,請參閱jQuery Documentation