问题描述
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>
想请问下是否哪里设置错误了?求大神帮助
引用之前微风给的答案,这才是正确的,不知道为什么被忽略了
或者如果不想使用URLSearchParams对象,则需要在headers对象中设置"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",代码如下