javascript - 为什么我的 ajax multipart/form-data POST 请求的正文为空?

标签 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_normal() 替换 upload_ajax() ,一切都会正常工作:

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

任何人都可以帮助我理解我在 ajax 调用中做错了什么吗?

最佳答案

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

要访问表单,请写入:

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

关于javascript - 为什么我的 ajax multipart/form-data POST 请求的正文为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29551099/

相关文章:

javascript - 如何: Swap options with jQuery while using jQuery UI

javascript - 想要使用内联添加、编辑、保存而不使用任何按钮来创建 JQgrid

javascript - 每次加载新页面时在 iOS webView 中运行 JS

javascript - 使用 ajax 和 laravel 提交表单

javascript - 如何将农历日期时间转换为日期时间

css - 从 Console.log 中获取信息并显示在 div 中

html - 在 div 中居中 ul li 图像

javascript - Ajax 调用 ColdFusion 组件不返回数据

javascript jquery ajax 成功返回对象

javascript - 简单来说,thunk 和高阶函数有什么区别?