使用 jQuery.ajax 提交文件会给出 TypeError

Submitting a file with jQuery.ajax gives TypeError

本文关键字:TypeError 文件 jQuery ajax 提交 使用      更新时间:2023-09-26

我正在尝试使用 jQuery 的 ajax 方法从表单提交文件:

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内部。

我在类似的代码中遇到了同样的问题。关于此错误的信息严重缺乏,因此由于OP没有详细说明:

通过一些调试,我意识到错误是由 jquery 深处的 ajax 调用抛出的,而不是实际的追加。原来我忘了在 ajax 请求中添加processData: false, contentType: false;这样做解决了问题。

当您将

以下内容添加到 ajax 对象时,它工作正常:

contentType: false,
processData: false,

所以它应该看起来像:

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

将这些参数添加到 ajax 可以解决问题

$.ajax({
      url: 'upload_ajax.php',
       type: 'POST',
       data: formData,
       contentType: false,
       processData: false,