22

ajaxjQueryのメソッドを使用してフォームからファイルを送信しようとしています:

var ofile=document.getElementById('image').files[0];
var formdata = new FormData();
formdata.append("image",ofile);

$.ajax({
    url:'elements/save_elements',
    data:formdata,
    type:'POST'
});

これにより、エラーが発生しますTypeError: 'append' called on an object that does not implement interface FormData

このエラーの原因は何ですか? 実際formdata.appendには発生しませんが、jQuery 内で発生します。

4

3 に答える 3

107

私は同様のコードで同じ問題を抱えていました。このエラーに関する情報が非常に不足しているため、OP は詳しく説明していないため、次のようになります。

いくつかのデバッグで、実際の追加ではなく、jquery の奥にある ajax 呼び出しによってエラーがスローされていることに気付きました。processData: false, contentType: falseajax リクエストに追加するのを忘れていたことが判明しました。そうすることで問題が解決しました。

于 2013-11-16T22:38:08.773 に答える
7

以下を ajax オブジェクトに追加すると、正常に動作します。

contentType: false,
processData: false,

したがって、次のようになります。

$.ajax({
    url:'elements/save_elements',
    data:formdata,
    type:'POST',
    contentType: false,
    processData: false,
});
于 2016-09-13T18:02:20.273 に答える