首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用jQuery.ajax提交文件会给TypeError带来

使用jQuery.ajax提交文件会给TypeError带来
EN

Stack Overflow用户
提问于 2013-11-01 16:03:33
回答 3查看 32.1K关注 0票数 22

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

代码语言:javascript
复制
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内部。

EN

回答 3

Stack Overflow用户

发布于 2013-11-17 06:38:09

我在类似的代码中也遇到了同样的问题。关于这个错误的信息严重匮乏,因此由于操作人员没有详细说明:

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

票数 105
EN

Stack Overflow用户

发布于 2016-09-14 02:02:20

当您将以下内容添加到ajax对象时,它可以很好地工作:

代码语言:javascript
复制
contentType: false,
processData: false,

所以它应该看起来像这样:

代码语言:javascript
复制
$.ajax({
    url:'elements/save_elements',
    data:formdata,
    type:'POST',
    contentType: false,
    processData: false,
});
票数 7
EN

Stack Overflow用户

发布于 2017-07-02 18:38:40

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

代码语言:javascript
复制
$.ajax({
      url: 'upload_ajax.php',
       type: 'POST',
       data: formData,
       contentType: false,
       processData: false,
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19722920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档