FormData - 用于构造一组表示表单字段及其值的键/值对

FormData 接口提供了一种方法,可以轻松构造一组表示表单字段及其值的键/值对,然后可以使用 XMLHttpRequest.send() 方法轻松地发送它。如果编码类型设置为 "multipart/form-data",它使用与表单相同的格式。

实现 FormData 的对象可以直接用于 for...of 结构,而不用 entries()for (var p of myFormData)(相当于 for (var p of myFormData.entries()))。

注意:该功能在 Web Workers 中可用。

构造函数

FormData()

创建一个新的 FormData 对象。

方法

FormData.append()

将新值附加到 FormData 对象内的现有键中,或者如果该键尚不存在则添加该键。

FormData.delete()

FormData 对象中删除键/值对。

FormData.entries()

返回 iterator,允许遍历该对象中包含的所有键/值对。

FormData.get()

返回与 FormData 对象中的给定键关联的第一个值。

FormData.getAll()

返回与 FormData 中的给定键关联的所有值的数组。

FormData.has()

返回一个布尔值,说明 FormData 对象是否包含某个键。

FormData.keys()

返回 iterator,允许遍历该对象中包含的键/值对的所有键。

FormData.set()

FormData 对象内的现有键设置新值,或者添加键/值(如果它尚不存在)。

FormData.values()

返回 iterator,允许遍历该对象中包含的所有值。

规范

规范 状态 备注
XMLHttpRequest
FormData 的定义
现行的标准 FormData 在 XHR 规范中定义

桌面浏览器兼容性

特性 Chrome Edge Firefox Internet Explorer Opera Safari
基础支持 7 支持 42 10 12 5
append 7 支持 42 103 12 5
delete 50 不支持 39 不支持 支持 支持
get 50 不支持 39 不支持 支持 支持
getAll 50 不支持 39 不支持 支持 支持
has 50 不支持 39 不支持 支持 支持
set 50 不支持 39 不支持 不支持 支持
entries 50 不支持 44 不支持 支持 支持
keys 50 不支持 44 未知 支持 支持
values 50 不支持 44 未知 未知 支持
Support of for...of 50 不支持 44 未知 未知 支持
Available in workers 支持 支持 39 不支持 支持 支持

移动浏览器兼容性

特性 Android Chrome for Android Edge mobile Firefox for Android IE mobile Opera Android iOS Safari
基础支持 支持1 支持 支持 4 未知 12 未知
append 31 未知 支持 42 未知 12 未知
delete 未知 50 不支持 支持 未知 支持 不支持
get 未知 50 不支持 支持 未知 支持 不支持
getAll 未知 50 不支持 支持 未知 支持 不支持
has 未知 50 不支持 支持 未知 支持 不支持
set 未知 50 不支持 支持 未知 不支持 不支持
entries 未知 50 不支持 44 未知 支持 未知
keys 未知 50 不支持 44 未知 未知 未知
values 未知 50 不支持 44 未知 未知 未知
Support of for...of 未知 50 不支持 44 未知 未知 未知
Available in workers 支持 支持 支持 支持 未知 支持 不支持

1. Android 4.0 中的 XHR,FormDatablob 时,发送的内容为空。

2. 在 Firefox 7 之前,将 Blob 数据附加到对象时,Content-Disposition HTTP 标头中的文件名会变为空字符串,导致某些服务器出错。从 Firefox 7 开始,将 blob 作为文件名会正常发送。

3. 通过启用 “将文件上载到服务器时包含本地目录” 选项,IE 将动态更改 Blob 内的文件名。要直接控制发送的文件名,开发人员应将文件名作为第三个参数值发送,即 formData.append(name, value, filename)

相关链接