ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

js FormData的使用

2022-04-26 01:01:34  阅读:167  来源: 互联网

标签:FormData value js v1 k1 key 使用 formData append


概述

FormData对象的使用:
1,用一些键值对来模拟一系列表单控件: 把form中的所有元素的name和value组成一个QueryString
2,异步上传文件

使用

创建一个空对象实例

var myForm = new FormData();

使用已有的表单进行初始化

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

可以使用这个表单作为初始化参数,来实例化FormData对象

//获取页面已有的一个form表单
var form = document.getElementById('myForm');
//用表单来初始化
var formData = new FormData(form);
//我们可以根据name来访问表单中的字段
var name = formData.get('name')//获取名字
var psw = formData.get('psw')//获取密码
//在此基础上添加其他数据
formData.append('token','kshd3iwich');

formData的操作

FormDdata中的数据类似Map<String,Object>,操作也类似map
image

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

通过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]
设置修改数据

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

formData.append('k1','v1');
formData.set('k1','v2');
formData.getAll('k1')//[v2]
判断是否有改数据
formData.append('k1','v1');
formData.append('k2','v2');
formData.has('k1');//true
formData.has('k2');//true
formData.has('k3');//false
删除数据
formData.append('k1','v1');
formData.append('k2','v2');
formData.has('k1');//true
formData.delete('k1');
formData.has('k1');//false
遍历
formData.append('k1','v1');
formData.append('k2','v2');
formData.append('k3','v3');

let i = formData.entries();
i.next();//{done: false, value: ['k1','v1']}
i.next();//{done: false, value: ['k2','v2']}
i.next();//{done: false, value: ['k3','v3']}
i.next();//{done: true, value: undefined}

说明
1,每次调用next返回一条数据,数据的顺序由添加的顺序决定
2, 返回的是一个对象, 当done为true时,说明已经遍历完所有的数据,这个也可以作为判断依据
3, 返回的对象的value属性以数组形式存储了一对key/value,数组下标O为key,下标1为value,如果一个key值对应多个value,则返回多对值
也可以通过values只获取value值

发送数据

js发送

//HTML部分
<form action="">
	<label for="">
		姓名: <input type='text' name='name' />
	</label>
	<label for="">
		文件: <input type='file' name='file' />
	</label>
	<label for="">
		<input type='button' value='保存' />
	</label>
</form>
//js部分
//获取按钮
var btn = document.querySelector('[type = file]');
//新建表单数据
var formData = new FormData();
//取得input中的文件,并将文件添加到表单数据中 input可多选多个文件
formData.append('upload',file.files[0]);
//创建xhr来发送数据
var xhr = new XMLHttpRequest();
//初始化请求参数
xhr.open('post','file.php');
xhr.setRequestHeader('Content-type','applicaiton/x-www-form-urlencoded');//设置请求头的contentType
//监听上传进度
xhr.upload.onprogress = function(event) {
	//console.log(event)事件对象
	var precent = (event.loaded / event.total) * 100 + '%';
	console.log(precent)
	progroess.style.width = precent;
}
xhr.send(formData);
xhr.onreadystatechange = function() {
    //status200状态表示成功,readyState表示对象传递完毕或者准备就绪
	if(xhr.readyState === 4 && xhr.status === 200) {
		
	}
}

标签:FormData,value,js,v1,k1,key,使用,formData,append
来源: https://www.cnblogs.com/guozhiqiang/p/16192733.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有