FormData+fetch 提交数据时如何正确格式数据
问题描述
react项目,在fetch下使用FormData对form表单元素进行数据封装后进行post提交至服务器,其格式被转为了WebKitFormBoundary模式,如下图
代码如下:
export function addChapter() {
return (dispatch) => {
let data = new FormData(document.getElementById('admin-edit__form'));
return fetch('/func', {
method: "POST",
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'
},
body: data
})
.then(response => response.json())
.then(json => {
console.log(json);
})
.catch(function(error) {
console.log('request failed: ', error)
})
}
}
若直接使用浏览器原生form表单submit按钮提交,数据格式正常,如下图:
form表单基本代码如下:
<form
method="post"
action="/func"
encType="application/x-www-form-urlencoded"
id="admin-edit__form"
className="admin-edit__form"
onSubmit={e => this.HandleSubmit(e)}
>
....
</form>
想请问下是否哪里设置错误了?求大神帮助
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
Content-Type 去掉即可
一些瞎鸡巴扯淡的答案,验证通过了么?
或者如果不想使用URLSearchParams对象,则需要在headers对象中设置"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",代码如下
希望这个答案能给后面的人解答。
content-type更改为application/x-www-form-urlencoded
body的参数更改为userName=&password=admin格式的
就可以了。
最后是如何解决的?
reacjs 用 fetch 上传图片, 不可设置 header, 参考https://segmentfault.com/a/11...
点击这里看详情
把headers 注释了 试试
引用之前微风给的答案,这才是正确的,不知道为什么被忽略了
或者如果不想使用URLSearchParams对象,则需要在headers对象中设置"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",代码如下