new FormData() 创建空实例最可控,适合动态拼接字段;从 form 元素创建需确保其已挂载 DOM;提交时勿手动设置 Content-Type;调试需用 entries() 或 get() 方法。

FormData 构造函数直接创建空实例再 append
直接用 new FormData() 创建空对象,是手动构建表单数据最可控的方式。适合不依赖真实 <form></form> 元素、或需动态拼接字段(比如混合文件与字符串、追加计算值)的场景。
常见错误:用 new FormData(formElement) 却传入 null 或未挂载 DOM 的节点,导致报错 TypeError: Failed to construct 'FormData': parameter 1 is not of type 'HTMLFormElement'。
- append 字段名重复时,后添加的值不会覆盖前值,而是形成多值(类似
<input name="tag" multiple>),服务端收到的是数组 - 传文件需用
Blob或File实例,不能传路径字符串(如"./avatar.jpg") - 若后续要调用
set()替换某字段全部值,注意它会清除同名所有项,而append()只追加
const fd = new FormData();
fd.append('username', 'alice');
fd.append('avatar', fileInput.files[0], 'avatar.png'); // 第三参数为文件名(可选)
fd.append('tags', 'frontend');
fd.append('tags', 'js');

















