FormData对象的介绍与使用方法

一. FormData对象介绍

FormData对象其实是在XMLHttpRequest 2级定义的,定义它的目的就是为序列化表单以及创建与表单格式相同的数据(当然是用于XHR传输)提供便利。

二. 创建FormData的实例对象

1. 使用构造函数创建一个空的实例对象

使用构造函数创建对象实例已经是老生常谈了,大家肯定不陌生了,格式如下:

var formData = new FormData();

此时可以调用append()方法来添加数据

2. 使用已有的表单来初始化一个实例对象

<form id="myForm" action="" method="post">
    <input type="text" name="name">名字
    <input type="password" name="pwd">密码
    <input type="submit" value="提交">
</form>

我们可以使用这个表单标签作为初始化参数,来初始化一个FormData实例对象:

//	获取页面中的一个form表单
var form = document.getElementById('myForm');
//	根据获取到的表单初始化一个 FormData 实例对象
var formData = new FormData(form);
//	根据 form 标签内的 input 标签的 name 属性来获取值
//	获取 name 属性值为 “name” 的 input 框的value值
var name = formData.get('name');
//	获取 name 属性值为 “pwd” 的 input 框的value值
var pwd = formData.get('pwd');
//	也可以在这个基础上添加一些数据
formData.append('age', 25);

三. 使用方法

首先,我们要明确 formData 里面存储的数据形式,一对 key/value 组成一条数据, key是唯一的一个key可能对应多个value
如果是使用表单初始化每一个表单字段对应一条数据,form标签内的每个标签的 name属性 即为key值,它们value属性对应value值。
示例

1. 获取值

可以通过 get(key)/getAll(key) 来获取对应的value值:

// 获取key为name的第一个值
formData.get("name"); 
// 返回一个数组,获取key为name的所有值
formData.getAll("name"); 

2. 添加数据

可以通过 append(key, value) 来添加数据,如果指定的key不存在则会新增一条数据,如果key存在,新增的数据则会添加到数据的末尾

formData.append("k1", "v1");
formData.append("k1", "v2");
formData.append("k1", "v1");
 
formData.get("k1"); // "v1"
formData.getAll("k1"); // ["v1","v2","v1"]

3. 设置修改数据

可以通过 set(key, value) 来设置修改数据,如果指定的key不存在则会新增一条,如果存在,则会修改对应的value值:

formData.append("k1", "v1");
formData.set("k1", "1");
formData.getAll("k1"); // ["1"]

4. 判断是否存在该数据

可以通过 has(key) 来判断是否对应的key值:

formData.append("k1", "v1");
formData.append("k2",null);
 
formData.has("k1"); // true
formData.has("k2"); // true
formData.has("k3"); // false

5. 删除数据

通过 delete(key) ,来删除数据:

formData.append("k1", "v1");
formData.append("k1", "v2");
formData.append("k1", "v1");
formData.delete("k1");
 
formData.getAll("k1"); // []
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值