为什么我的ajax multipart / form-data POST请求的主体是空的?

时间:2015-04-09 23:58:15

标签: javascript html ajax post xmlhttprequest

我的html中有以下表格:

<form id="formid" action="upload" method="POST" enctype="multipart/form-data">
<input type="file" name="file">
</form>

我通过ajax提交POST请求,如下所示:

function upload_ajax(){
  var xhr = new XMLHttpRequest();

  var form = $("#formid");
  var formData = new FormData(form);

  xhr.open("post", form.attr('action') , true);
  xhr.send(formData);
}

但是当我选择一个文件并运行upload_ajax()时,该文件不会发送到服务器。在检查POST请求时,我可以看到正文是空的(除了边界:------ WebKitFormBoundaryzRrtLc7ACnj5mKtE - )。

如果我将upload_ajax()替换为upload_normal(),那么一切正常:

function upload_normal(){
   $('#formid').submit();
} 

任何人都可以帮助我理解我在ajax电话中的错误吗?

1 个答案:

答案 0 :(得分:1)

我认为您的错误是$("#formid")是jquery对象而不是表单。

访问表单写:

var form = $("#formid")[0];