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,FormData
为 blob
时,发送的内容为空。
2. 在 Firefox 7 之前,将 Blob
数据附加到对象时,Content-Disposition
HTTP 标头中的文件名会变为空字符串,导致某些服务器出错。从 Firefox 7 开始,将 blob
作为文件名会正常发送。
3. 通过启用 “将文件上载到服务器时包含本地目录” 选项,IE 将动态更改 Blob
内的文件名。要直接控制发送的文件名,开发人员应将文件名作为第三个参数值发送,即 formData.append(name, value, filename)
。