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 |