【问题标题】:Why is the body of my ajax multipart/form-data POST request empty?为什么我的 ajax multipart/form-data POST 请求的正文是空的?
【发布时间】:2015-06-15 13:30:13
【问题描述】:

我的 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 调用中做错了什么?

【问题讨论】:

  • 您访问的是$_POST 还是$_FILES
  • 服务器端不是我写的。这是一个谷歌应用引擎应用程序,此上传将发送到谷歌 blobstore,我们只能使用谷歌自己的服务器。 (我正在使用 chrome 开发者工具访问 POST 数据)

标签: javascript html ajax post xmlhttprequest


【解决方案1】:

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

访问表单写入:

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

【讨论】:

    猜你喜欢
    • 2017-08-12
    • 2016-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 2021-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多