JS FormData对象使用方法实例详解


Posted in Javascript onFebruary 12, 2020

本文实例讲述了JS FormData对象使用方法。分享给大家供大家参考,具体如下:

FormData的主要用途有两个:

1、将form表单元素的name与value进行组合,实现表单数据的序列化,从而减少表单元素的拼接,提高工作效率。

2、异步上传文件

一、创建formData对象

1、创建一个空对象:

//通过FormData构造函数创建一个空对象
var formdata=new FormData();
//可以通过append()方法来追加数据
formdata.append("name","laotie");
//通过get方法对值进行读取
console.log(formdata.get("name"));//laotie
//通过set方法对值进行设置
formdata.set("name","laoliu");
console.log(formdata.get("name"));//laoliu

2、通过表单对formData进行初始化

创建表单:

<form id="advForm">
  <p>广告名称:<input type="text" name="advName" value="xixi"></p>
  <p>广告类别:<select name="advType">
    <option value="1">轮播图</option>
    <option value="2">轮播图底部广告</option>
    <option value="3">热门回收广告</option>
    <option value="4">优品精选广告</option>
  </select></p>
  <p><input type="button" id="btn" value="添加"></p>
</form>

通过表单元素作为参数,实现对formData的初始化:

//获得表单按钮元素
var btn=document.querySelector("#btn");
//为按钮添加点击事件
btn.onclick=function(){
  //根据ID获得页面当中的form表单元素
  var form=document.querySelector("#advForm");
  //将获得的表单元素作为参数,对formData进行初始化
  var formdata=new FormData(form);
  //通过get方法获得name为advName元素的value值
  console.log(formdata.get("advName"));//xixi
  //通过get方法获得name为advType元素的value值
  console.log(formdata.get("advType"));//1 
}

二、操作方法

1、通过get(key)与getAll(key)来获取相对应的值

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

2、通过append(key,value)在数据末尾追加数据

//通过FormData构造函数创建一个空对象
var formdata=new FormData();
//通过append()方法在末尾追加key为name值为laoliu的数据
formdata.append("name","laoliu");
//通过append()方法在末尾追加key为name值为laoli的数据
formdata.append("name","laoli");
//通过append()方法在末尾追加key为name值为laotie的数据
formdata.append("name","laotie");
//通过get方法读取key为name的第一个值
console.log(formdata.get("name"));//laoliu
//通过getAll方法读取key为name的所有值
console.log(formdata.getAll("name"));//["laoliu", "laoli", "laotie"]

3、通过set(key, value)来设置修改数据

key的值不存在,会添加一条数据

//通过FormData构造函数创建一个空对象
var formdata=new FormData();
//如果key的值不存在会为数据添加一个key为name值为laoliu的数据
formdata.set("name","laoli");
//通过get方法读取key为name的第一个值
console.log(formdata.get("name"));//laoli
key的值存在,会修改对应的value值
//通过FormData构造函数创建一个空对象
var formdata=new FormData();
//通过append()方法在末尾追加key为name值为laoliu的数据
formdata.append("name","laoliu");
//通过append()方法在末尾追加key为name值为laoliu2的数据
formdata.append("name","laoliu2");
//通过get方法读取key为name的第一个值
console.log(formdata.get("name"));//laoliu
//通过getAll方法读取key为name的所有值
console.log(formdata.getAll("name"));//["laoliu", "laoliu2"]
//将存在的key为name的值修改为laoli
formdata.set("name","laoli");
//通过get方法读取key为name的第一个值
console.log(formdata.get("name"));//laoli
//通过getAll方法读取key为name的所有值
console.log(formdata.getAll("name"));//["laoli"]

4、通过has(key)来 判断是否存在对应的key值

//通过FormData构造函数创建一个空对象
var formdata=new FormData();
//通过append()方法在末尾追加key为name值为laoliu的数据
formdata.append("name","laoliu");
//判断是否包含key为name的数据
console.log(formdata.has("name"));//true
//判断是否包含key为age的数据
console.log(formdata.has("age"));//false

5、通过delete(key)可以删除数据

//通过FormData构造函数创建一个空对象
var formdata=new FormData();
//通过append()方法在末尾追加key为name值为laoliu的数据
formdata.append("name","laoliu");
console.log(formdata.get("name"));//laoliu
//删除key为name的值
formdata.delete("name");
console.log(formdata.get("name"));//null

三、通过XMLHttpRequest发送数据

创建表单:

<form id="advForm">
  <p>广告名称:<input type="text" name="advName" value="xixi"></p>
  <p>广告类别:<select name="advType">
    <option value="1">轮播图</option>
    <option value="2">轮播图底部广告</option>
    <option value="3">热门回收广告</option>
    <option value="4">优品精选广告</option>
  </select></p>
  <p>广告图片:<input type="file" name="advPic"></p>
  <p>广告地址:<input type="text" name="advUrl"></p>
  <p>广告排序:<input type="text" name="orderBy"></p>
  <p><input type="button" id="btn" value="添加"></p>
</form>

发送数据:

var btn=document.querySelector("#btn");
btn.onclick=function(){
  var formdata=new FormData(document.getElementById("advForm"));
  var xhr=new XMLHttpRequest();
  xhr.open("post","http://127.0.0.1/adv");
  xhr.send(formdata);
  xhr.onload=function(){
    if(xhr.status==200){
      //...
    }
  }
}

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

更多关于JavaScript相关内容可查看本站专题:《JavaScript操作DOM技巧总结》、《JavaScript页面元素操作技巧总结》、《JavaScript事件相关操作与技巧大全》、《JavaScript查找算法技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript错误与调试技巧总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
判断页面是关闭还是刷新的js代码
Jan 28 Javascript
Javascript中的delete介绍
Sep 02 Javascript
javascript制作坦克大战全纪录(1)
Nov 27 Javascript
JavaScript学习笔记之创建对象
Mar 25 Javascript
JS动态创建元素的两种方法
Apr 20 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
Feb 25 Javascript
Validform表单验证总结篇
Oct 31 Javascript
node.js中express中间件body-parser的介绍与用法详解
May 23 Javascript
在Vue项目中使用jsencrypt.js对数据进行加密传输的方法
Apr 17 Javascript
vue cli4下环境变量和模式示例详解
Apr 09 Javascript
jQuery 常用特效实例小结【显示与隐藏、淡入淡出、滑动、动画等】
May 19 jQuery
解决idea开发遇到javascript动态添加html元素时中文乱码的问题
Sep 29 Javascript
JS+HTML实现自定义上传图片按钮并显示图片功能的方法分析
Feb 12 #Javascript
微信小程序实现树莓派(raspberry pi)小车控制
Feb 12 #Javascript
JavaScript 替换所有匹配内容及正则替换方法
Feb 12 #Javascript
使用webpack搭建pixi.js开发环境
Feb 12 #Javascript
十分钟教你上手ES2020新特性
Feb 12 #Javascript
node.js基于dgram数据报模块创建UDP服务器和客户端操作示例
Feb 12 #Javascript
解决三元运算符 报错“SyntaxError: can''t assign to conditional expression”
Feb 12 #Javascript
You might like
怎样才能成为PHP高手?学会“懒惰”的编程
2006/12/05 PHP
php中使用__autoload()自动加载未定义类的实现代码
2013/02/06 PHP
PHP goto语句简介和使用实例
2014/03/11 PHP
php中引用&amp;的用法分析【变量引用,函数引用,对象引用】
2016/12/12 PHP
用javascript获取textarea中的光标位置
2008/05/06 Javascript
ASP.NET MVC中EasyUI的datagrid跨域调用实现代码
2012/03/14 Javascript
Javascript的严格模式strict mode详细介绍
2014/06/06 Javascript
jQuery实现简单网页遮罩层/弹出层效果兼容IE6、IE7
2014/06/16 Javascript
js实现支持手机滑动切换的轮播图片效果实例
2015/04/29 Javascript
JavaScript计算某一天是星期几的方法
2015/08/05 Javascript
学习JavaScript设计模式(链式调用)
2015/11/26 Javascript
jQuery验证插件validate使用方法详解
2020/09/13 Javascript
BootStrap实现邮件列表的分页和模态框添加邮件的功能
2016/10/13 Javascript
JavaScript实现前端实时搜索功能
2020/03/26 Javascript
postman+json+springmvc测试批量添加实例
2018/03/31 Javascript
jQuery实现文件编码成base64并通过AJAX上传的方法
2018/04/12 jQuery
JavaScript数据结构之栈实例用法
2019/01/18 Javascript
解决vue admin element noCache设置无效的问题
2019/11/12 Javascript
深度解读vue-resize的具体用法
2020/07/08 Javascript
详解Swift中属性的声明与作用
2016/06/30 Python
基于python生成器封装的协程类
2019/03/20 Python
python仿evething的文件搜索器实例代码
2019/05/13 Python
如何基于python实现画不同品种的樱花树
2020/01/03 Python
Python实现树莓派摄像头持续录像并传送到主机的步骤
2020/11/30 Python
使用canvas实现黑客帝国数字雨效果
2020/01/02 HTML / CSS
Sneaker Studio波兰:购买运动鞋
2018/04/28 全球购物
简述你对Statement,PreparedStatement,CallableStatement的理解
2013/03/25 面试题
电子商务个人职业生涯规划范文
2014/02/12 职场文书
会员卡清退活动总结
2014/08/27 职场文书
工作业绩不及格检讨书
2014/10/28 职场文书
先进基层党组织材料
2014/12/25 职场文书
2015教师个人年度工作总结
2015/10/23 职场文书
2016年读书月活动总结范文
2016/04/06 职场文书
JavaScript canvas实现流星特效
2021/05/20 Javascript
MySQL Router实现MySQL的读写分离的方法
2021/05/27 MySQL
MySQL 执行数据库更新update操作的时候数据库卡死了
2022/05/02 MySQL