问题场景
创建FormData
对象作为某请求的参数,程序调试过程中想要查看该对象内容,使用console.log()
打印得到空对象。
1 | let formData = new FormData(); |
解决方案
使用formData.get("key");
获取FormData
中的值
1 | formData.get("k1"); // v1 |
相关知识
1.FormData
是一种特殊的对象类型,不可序列化,因此使用console.log()
直接打印显示的是FormData原型。
2.创建FormData
对象
【直接创建一个空对象】
1 | var formData = new FormData();//通过append方法添加数据 |
【使用已有表单来初始化对象】
1 | <form id="myForm" action="" method="post"> |
1 | // 获取页面已有的一个form表单 |
3.相关操作方法
【添加数据】
1 | // 添加数据 |
FormData
接口的append()
方法会添加一个新值到FormData
对象内的一个已存在的键中,如果键不存在则会添加该键。
FormData.set
和append()
的区别在于,如果指定的键已经存在,FormData.set
会使用新值覆盖已有的值,而append()
会把新值添加到已有值集合的后面。
【获取数据】
1 | formData.append("k1", "v1"); |
FormData
的get()
方法用于返回 FormData 对象中和指定的键关联的第一个值
FormData
的getAll()
方法会返回和指定键关联的全部值
【判断是否存在】
1 | formData.append("k1", "v1"); |
【删除数据】
1 | // 删除数据 |
【获取keys】
1 | // 先创建一个 FormData 对象 |
FormData.keys()
该方法返回一个迭代器(iterator
),遍历了该 formData 包含的所有 key,这些 key 是String
对象。
【获取values】
1 | //创建一个 FormData 测试对象 |
FormData.values()
方法返回一个允许遍历该对象中所有值的迭代器
。这些值是String
或是Blob
对象。
【获取key和value】
1 | //创建一个 FormData 测试对象 |
FormData.entries()
方法返回一个iterator
对象,此对象可以遍历访问 FormData 中的键值对。其中键值对的 key 是一个String
对象;value 是一个String
, 或者Blob
对象。