# AJAX 2.0
2008 年 W3C 退出 AJAX 2.0,其中提供三個新特性(注意 IE 老版本瀏覽器是不兼容的):
* FormData
* 請求超時
* 進度監聽
# FormData API
用于模擬或者是獲取表單數據及異步文件上傳。
* set: 設置鍵值對,若指定的 key 已經存在那么會覆蓋
* get: 根據 key 來獲取對應的 value(第一個)
* has: 檢查是否存在指定的鍵值對
* append: 設置鍵值對,若存在則追加的 value 值
* getAll: 根據 key 來獲取所有對應所有 value
* delete: 刪除鍵值對
* forEach: 遍歷
* keys: 獲取所有 key 迭代器
* values: 獲取所有 value 迭代器
* entries: 獲取所有鍵值對迭代器
```
// 使用表單創建 FormData 對象
var formElement = document.querySelector('form');
var formData = new FormData(formElement);
// ----------------------------------------------
// 不使用表單創建 FormData 對象
var data = new FormData();
//設置 FormData 數據
data.set('username', 'zs');
data.set('password', '12345');
data.set('email', 'zs@126.com');
data.append('email', 'zs@163.com');
//獲取 FormData 數據
console.log(data.get('username'));
console.log(data.get('email'));
console.log(data.getAll('email'));
//遍歷成員
data.forEach(function (value, key) {
console.log(key, value);
})
console.log(data.has('password'));
data.delete('password');
console.log(data.has('password'));
//創建迭代器
var iteratorKeys = data.keys();
console.log(iteratorKeys.next());
var iteratorValues = data.values();
console.log(iteratorValues.next());
var iteratorEntries = data.entries();
console.log(iteratorEntries.next());
```