要引用(强调我的)MDN
FormData:
该
FormData
接口提供了一种轻松构造一组代表表单字段及其值的键/值对的XMLHttpRequest.send()方法,然后可以使用该方法轻松发送该键/值对。
如果编码类型设置为,则使用与表单使用的格式相同的格式"multipart/form-data"。
因此,使用时
FormData您将自己锁定在
multipart/form-data。无法将
FormData对象作为正文发送并且 不
发送
multipart/form-data格式的数据。
如果要发送数据,则
application/x-www-form-urlenpred必须将正文指定为URL编码的字符串,或者传递一个
URLSearchParams对象。不幸的是,后者不能直接从
form元素初始化。如果您不想自己遍历表单元素( 可以
使用进行迭代
HTMLFormElement.elements),则还可以
URLSearchParams从
FormData对象创建一个对象:
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标题。
正如僧侣时代在注释中指出的那样,您还可以直接创建
URLSearchParams和传递
FormData对象,而不是将值附加到循环中:
const data = new URLSearchParams(new FormData(formElement));
尽管它在浏览器中仍具有一些实验性支持,所以请确保在使用前对其进行正确测试。



