FormData的主要用途有两个:

  1. 网络请求中处理表单数据
  2. 网络请求中处理用来异步的上传文件

将XMLHTTPRequest请求发送出去

new FormData ( HTMLFormElement: ele)
**

  1. <form name="formTest">
  2. <input type="text" placeholder="请输入用户名" name="user" value="wendingding">
  3. <input type="password" placeholder="请输入密码" name="pass" value="123456789">
  4. </form>
  1. //列出创建formData实例对象的几种方式
  2. //001 通过构造函数创建不传递任务参数
  3. var formData1 = new FormData(); //空的实例对象
  4. //通过调用对象的方法来设置数据(模拟表单)
  5. //设置数据
  6. formData1.set("name","文顶顶");
  7. formData1.set("email","wendingding_ios@126.com");
  8. formData1.set("friends","熊大");
  9. //设置数据(追加)
  10. formData1.append("friends","光头强");
  11. formData1.append("friends","萝卜头");
  12. //查看实例数据
  13. formData1.forEach(function(value,key){
  14. console.log(key,value);
  15. })
  16. console.log("----------------------------------");
  17. //002 获取表单标签传递给FormData构造函数
  18. var formData2 = new FormData(document.getElementById("formTest"))
  19. formData2.forEach(function(value,key){
  20. console.log(key,value);
  21. })

表单标签只有添加name属性才能获取数据

FormData - 图1

  1. //01 创建空的formData实例对象
  2. var data = new FormData();
  3. //02 设置数据(添加)
  4. data.set("age",18);
  5. data.set("name","LiuY");
  6. data.set("type","法师");
  7. data.set("address","泉水中心");
  8. //03 设置数据(修改和删除)
  9. data.set("name","MiTaoer");
  10. data.delete("address");
  11. //04 设置数据(追加)
  12. data.append("type","战士");
  13. data.append("type","辅助");
  14. ===========================================
  15. //05 读取数据(指定key-one)
  16. console.log(data.get("name")); //MiTaoer
  17. console.log(data.get("type")); //法师
  18. //06 读取数据(指定key-All)
  19. console.log(data.getAll("type")); //["法师", "战士", "辅助"]
  20. //07 检查是否拥有指定的key
  21. console.log(data.has("age")); //true
  22. console.log(data.has("email")); //false
  23. //08 迭代器的基本使用(keys)
  24. var keyIterator = data.keys() //获取迭代器对象
  25. console.log(keyIterator.next()); //{done: false, value: "age"}
  26. console.log(keyIterator.next()); //{done: false, value: "name"}
  27. console.log(keyIterator.next()); //{done: false, value: "type"}
  28. console.log(keyIterator.next()); //{done: false, value: "type"}
  29. console.log(keyIterator.next()); //{done: false, value: "type"}
  30. console.log(keyIterator.next()); //{done: true, value: undefined}
  31. console.log("___________________");
  32. //09 迭代器的基本使用(values)
  33. var valueIterator = data.values(); //获取迭代器对象
  34. console.log(valueIterator.next()); //{done: false, value: "18"}
  35. console.log(valueIterator.next()); //{done: false, value: "MiTaoer"}
  36. console.log(valueIterator.next()); //{done: false, value: "法师"}
  37. console.log(valueIterator.next()); //{done: false, value: "战士"}
  38. console.log(valueIterator.next()); //{done: false, value: "辅助"}
  39. console.log(valueIterator.next()); //{done: true, value: undefined}
  40. //10 迭代器的基本使用(entries)
  41. console.log(data.entries().next()); //{done: false, value: ["age", "18"]}
  42. //11 formData对象的遍历
  43. data.forEach(function(value,key){
  44. //输出结果
  45. // age 18
  46. // name MiTaoer
  47. // type 法师
  48. // type 战士
  49. // type 辅助
  50. console.log(key,value);
  51. })