一、 概述

FormData类型是在XMLHttpRequest level 2定义的,它是为序列化表以及创立与表单格局雷同的数据(用于XHR传输)提供便当。FormData对象自身没有任何属性和办法,所有操作方法都在其原型上

二、 应用创立FormData对象的办法

1.从头创立一个FormData对象能够创立一个本人的FormData对象,而后通过append(key, value) 办法向对象中增加键值对,如:

var formdata = new FormData();
formdata.append('name', '李明' );
formdata.appdnd('mobile', 13222222222); //数字会被转换成字符串
2.应用已有的表单来初始化一个对象实例如已有表单:

<form id="_formData" method="post">

<input type="text" name="name">名字<input type="password" name="psw">明码

</form>
var form = document.getElementById('_formData'); //找到已有表单
var formFile = new FormData(form); // 生成FormData对象时指定表单元素
当然,能够给formFile用append增加参数,如:

formFile.append('mobile', 17911111111);
三、能够通过set(key, value)来设置批改数据,如果指定的key不存在则会新增一条,如果存在,则会批改对应的value值

formFile.set('name', '李铭')
has(key):判断是否有对应的key值

delete(key):删除数据

四、传送FormData对象数据,可用xhr传

var xhr = new XMLHttpRequest();
xhr.open('post', '/user/login');
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xhr.send(formData);
留神,发送时,hender的content-Type需为:application/x-www-form-urlencoded该形式可实现文件的异步上传

五、理论利用案例

org前后端拆散,经营端视频课/直播课的批量导入成员页面,原来点【确定】提交数据时,用的是表单提交,并由后端给页面调配导入后果数据。拆散时须要通过ajax的形式,拿到后端返回的导入统计后果数据操作DOM元素,用FormData对象能够把表单数据通过ajax形式传给后端,拿到返回的后果,这样用尽量少的解决达到了目标。次要代码:

let form=document.getElementById('_formData')
let fileForm = new FormData(form)

this.axios({
url: '...import...',
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data: fileForm
})
.then(response => {
// 返回后的解决
})