使用jQuery.ajax提交文件会产生TypeError

时间:2013-11-01 08:03:33

标签: javascript jquery api form-data

我正在尝试使用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中。

3 个答案:

答案 0 :(得分:99)

我遇到了类似代码的相同问题。关于这个错误的信息非常缺乏,所以由于OP没有详细说明:

通过一些调试,我意识到错误是由jquery深度的ajax调用引发的,而不是实际的追加。 结果我忘了将processData: false, contentType: false添加到a​​jax请求中;这样做可以解决问题。

答案 1 :(得分:2)

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

contentType: false,
processData: false,

所以看起来应该是这样的:

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

答案 2 :(得分:0)

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

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