javascript - 为什么通过表单发送数据时需要包含 enctype ="multipart/form-data"但通过 xmlhttprequest 发送时不需要

标签 javascript html ajax forms

当 HTML 表单包含 <input type="file"> 时我需要指定enctype="multipart/form-data"表单上的属性。但是,当我通过 XMLHttpRequest 发送二进制文件时我不需要在任何地方指定该类型:

var builder = new BlobBuilder();
builder.append("Hello world!");
var blob = builder.getBlob("text/plain");

var oReq = new XMLHttpRequest();
oReq.open("POST", url, true);
oReq.send(blob);

为什么会这样?

最佳答案

使用表单,您可以告诉浏览器如何格式化数据以将其发送到服务器。 (enctype 的默认值不支持文件)。

使用 XHR,您可以自己格式化数据。 (也就是说,您应该仍然使用addHeader为您的POST正文指定合适的内容类型)。

关于javascript - 为什么通过表单发送数据时需要包含 enctype ="multipart/form-data"但通过 xmlhttprequest 发送时不需要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25443160/

相关文章:

ruby-on-rails - 使用 AJAx 和 Datatables 在 rails 3.2 中过滤数据库结果

javascript - PHPMailer 返回 AJAX

javascript - jQuery 在特定时间内突出显示行

javascript - 刷新/重新绘制网格时组摘要消失

javascript - 将模式链接到输入字段并使用 JavaScript 进行验证

jquery - 如何在提交表单时使用 JQuery Ajax 发送请求而不重新加载页面

javascript - 如何使用 html 根据表格内容增加图像大小?

javascript - 通过jquery打印更多元素

php - 使用 PHP/MySQL 的注册页面不将用户值存储到数据库

php - 提交表格不会停留在同一页面上