共计 1372 个字符,预计需要花费 4 分钟才能阅读完成。
一、概述
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 => {
// 返回后的解决
})