set()
方法会对 FormData
对象里的某个
key
设置一个新的值,如果该
key
不存在,则添加。
set()
和 FormData.append
不同之处在于:如果某个 key 已经存在,set()
会直接覆盖所有该 key 对应的值,而 FormData.append
则是在该 key 的最后位置再追加一个值。
注意: 该方法在 Web Workers 可用。
语法
该方法有两种使用方式,一个是传入两个参数,一个是传入三个参数。
formData.set(name, value); formData.set(name, value, filename);
参数
name
- 字段名称。
value
- 字段的值,如果是传入两个参数的方式,那么该值是一个
USVString
,如果不是,将被转成一个字符串。如果是传入三个参数的方式,那么该值将是一个布尔值(Blob
),文件(File
),或者一个USVString
,如果不是,将被转成一个字符串。 filename
可选- 传给服务器的文件名称(一个
USVString
)。当第二个参数是一个布尔值(Blob
)或者文件(File
)的时候,Blob
对象的默认文件名是 "blob"。
注意: 如果对 FormData 对象插入一个布尔值( Blob
),那么发送给服务器的请求头部(header) 里的 “Content-Disposition” 里的文件名称将会根据浏览器的不同而不同。
示例
先创建一个空的 FormData
对象:
var formData = new FormData(); // Currently empty
使用 FormData.set
设置键/值 :
formData.set('username', 'Chris'); formData.set('userpic', myFileInput.files[0], 'chris.jpg');
规范
规范 | 状态 | 说明 |
---|---|---|
XMLHttpRequest set() |
Living Standard |
浏览器兼容性
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | 50.0 | 39.0 (39.0) | 未实现 | 未实现 | 未实现 |
Available in web workers | 50.0 | 39.0 (39.0) | 未实现 | 未实现 | 未实现 |
Feature | Android | Android Webview | Firefox Mobile (Gecko) | Firefox OS (Gecko) | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|---|---|
Basic support | 未实现 | 50.0 | (Yes) | (Yes) | 未实现 |
未实现 |
未实现 | 50.0 |
Available in web workers | 未实现 | 50.0 | (Yes) | (Yes) | 未实现 | 未实现 | 未实现 | 50.0 |