formData是ajax2.0(XMLHttpRequest Level2)新提出的接口,利用FormData對象能夠將form表單元素的name與value進行組合,實現表單數據的序列化,從而介紹表單元素的拼接,提升工做效率php
var formData=new FormData(form); // 經過append()方法追加數據 formData.append("name","Lori");
FormData提供的方法ajax
向 FormData
中添加新的屬性值,若是FormData
對應的屬性值存在則覆蓋原值,不然新增一項屬性值。數組
給 FormData
設置屬性值,若是FormData
對應的屬性值存在則覆蓋原值,不然新增一項屬性值app
返回在 FormData
對象中與給定鍵關聯的第一個值post
返回一個包含 FormData
對象中與給定鍵關聯的全部值的數組。spa
FormData.delete():從FormData對象裏面刪除一個鍵值對code
返回一個布爾值代表 FormData
對象是否包含某些鍵orm
返回一個包含全部鍵的iterator
對象對象
返回一個包含全部值的iterator
對象。blog
返回一個包含全部鍵值對的iterator
對象
下面能咱們就使用下面的例子來給你們演示一下怎麼使用:
<form id="userForm"> <p>姓名:<input type="text" name="userNamee" value="李白"></p> <p>性別:<input type="radio" name="sex" value="male" checked>男 <input type="radio" name="sex" value="female" >女 </p> <p>城市:<select name="city"> <option value="1">北京</option> <option value="2">上海</option> <option value="3">廣州</option> <option value="4">深圳</option> </select></p> <p><input type="button" id="btn" value="添加"></p> </form>
let btn = document.getElementById("btn"); btn.onclick = function () { // 根據ID得到頁面中的form表單元素 var form = document.querySelector("#userForm"); // 將得到的表單元素做爲參數,對formData進行初始化 var formData = new FormData(form); formData.append("name", "Lori"); formData.append("name", "Jack"); formData.append("gender", "Jacie"); // 經過get方法只能讀取第一個key爲name的值 console.log(formData.get("name")); // Lori // 經過getAll方法能獲取到全部key爲name的值 console.log(formData.getAll("name")); //["Lori","Jack"] // 經過set修改數據,若是存在多個的話,就會改到只剩下一個key爲name的值 formData.set('name', "李白"); // ["李白"] // 若是不存在的話,就會添加一條數據 formData.set('age', 30); console.log(formData.getAll('name')); console.log(formData.getAll('age')); // 經過delete方法刪除key爲gender的數據 formData.delete("gender"); console.log(formData.get('gender')); // null for (let keys of formData.keys()) { console.log(keys); // userName sex city name age } for (let keys of formData.entries()) { console.log(keys); // ["userNamee", "李白"] ["sex", "male"] ["city", "1"] ["name", "李白"] ["age", "30"] } for (let keys of formData.values()) { console.log(keys); } }
下面咱們來作一個文件上傳的例子:
<form id="userForm"> <p>姓名:<input type="text" name="userNamee" value="李白"></p> <p>性別:<input type="radio" name="sex" value="male" checked>男 <input type="radio" name="sex" value="female">女 </p> <p>城市:<select name="city"> <option value="1">北京</option> <option value="2">上海</option> <option value="3">廣州</option> <option value="4">深圳</option> </select></p> <p> 頭像:<input type="file" name="headImg"></p> </p> <p><input type="button" id="btn" value="添加"></p> </form>
let btn = document.getElementById("btn"); btn.onclick = function () { var formdata=new FormData(document.getElementById("userForm")); var xhr = new XMLHttpRequest(); xhr.open("post", "file.php"); // 監聽上傳進度 xhr.upload.onprogress=function(ev){ let percent=(ev.loaded/ev.total)*100+'%'; console.log(percent) } xhr.send(formdata); xhr.onload = function () { if (xhr.status == 200) { //... } } }