javascript – 如何使用fetch api发布表单数据?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 如何使用fetch api发布表单数据?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2133字,纯文字阅读大概需要4分钟。
内容图文
![javascript – 如何使用fetch api发布表单数据?](/upload/InfoBanner/zyjiaocheng/714/032872f447ee4b35b4362901db5bbf1b.jpg)
我的代码:
fetch("api/xxx", {
body: new FormData(document.getElementById("form")),
headers: {
"Content-Type": "application/x-www-form-urlencoded",
// "Content-Type": "multipart/form-data",
},
method: "post",
}
我尝试使用fetch api发布我的表单,它发送的正文如下:
-----------------------------114782935826962
Content-Disposition: form-data; name="email"
test@example.com
-----------------------------114782935826962
Content-Disposition: form-data; name="password"
pw
-----------------------------114782935826962--
(我不知道为什么每次发送边界的数字都会改变…)
我希望用“Content-Type”发送数据:“application / x-www-form-urlencoded”,我该怎么办?或者,如果我只需处理它,我如何解码控制器中的数据?
谁回答我的问题,我知道我可以做到:
fetch("api/xxx", {
body: "email=test@example.com&password=pw",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
},
method: "post",
}
我想要的是像$(“#form”).jQuery中的serialize()(没有使用jQuery)或者在控制器中解码mulitpart / form-data的方法.谢谢你的回答.
解决方法:
引用MDN on FormData(强调我的):
The
FormData
interface provides a way to easily construct a set of key/value pairs representing form fields and their values, which can then be easily sent using theXMLHttpRequest.send()
method. It uses the same format a form would use if the encoding type were set to"multipart/form-data"
.
因此,在使用FormData时,您将自己锁定为multipart / form-data.无法将FormData对象作为正文发送,也无法以multipart / form-data格式发送数据.
如果要将数据作为application / x-www-form-urlencoded发送,则必须将主体指定为URL编码的字符串,或者传递URLSearchParams对象.遗憾的是,后者无法从表单元素直接初始化.如果您不想自己遍历表单元素(可以使用HTMLFormElement.elements进行迭代),还可以从FormData对象创建URLSearchParams对象:
const data = new URLSearchParams();
for (const pair of new FormData(formElement)) {
data.append(pair[0], pair[1]);
}
fetch(url, {
method: 'post',
body: data,
})
.then(…);
请注意,您无需自己指定Content-Type标头.
如注释中的monk-time所述,您还可以创建URLSearchParams并直接传递FormData对象,而不是将值附加到循环中:
const data = new URLSearchParams(new FormData(formElement));
这仍然在浏览器中有一些实验支持,因此请确保在使用之前正确测试.
内容总结
以上是互联网集市为您收集整理的javascript – 如何使用fetch api发布表单数据?全部内容,希望文章能够帮你解决javascript – 如何使用fetch api发布表单数据?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。