FormData使用方法详解

本文详细介绍了FormData在JavaScript中的应用,包括表单序列化、异步文件上传,以及关键操作如get(), append(), set(), has(), 和 delete()。通过实例演示了如何创建、使用和管理FormData对象及其在Ajax请求中的应用。

FormData的主要用途有两个:

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

一、创建formData对象

1、创建一个空对象:

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

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

创建表单:
<form id="advForm">
    <p>广告名称:<input type="text" name="advName"  value="dwp"></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"));//dwp
    //通过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值为dwpnb的数据
formdata.append("name","dwpnb");
//通过append()方法在末尾追加key为name值为dwo的数据
formdata.append("name","dwp");
//通过append()方法在末尾追加key为name值为dwpnb666的数据
formdata.append("name","dwpnb666");
//通过get方法读取key为name的第一个值
console.log(formdata.get("name"));//dwpnb
//通过getAll方法读取key为name的所有值
console.log(formdata.getAll("name"));//["dwpnb", "dwp", "dwpnb666"]
3、通过set(key, value)来设置修改数据

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

//通过FormData构造函数创建一个空对象
var formdata=new FormData();
//如果key的值不存在会为数据添加一个key为name值为dwpnb的数据
formdata.set("name","dwpnb666");
//通过get方法读取key为name的第一个值
console.log(formdata.get("name"));//dwpnb666

key的值存在,会修改对应的value值

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

console.log(formdata.getAll("name"));//["dwpnb", "dwpnb2"]

//将存在的key为name的值修改为dwpnb666
formdata.set("name","dwpnb666");
//通过get方法读取key为name的第一个值
console.log(formdata.get("name"));//dwpnb666
//通过getAll方法读取key为name的所有值
console.log(formdata.getAll("name"));//["dwpnb666"]
4、通过has(key)来判断是否存在对应的key值
//通过FormData构造函数创建一个空对象
var formdata=new FormData();
//通过append()方法在末尾追加key为name值为dwpnb的数据
formdata.append("name","dwpnb");
//判断是否包含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值为dwpnb的数据
formdata.append("name","dwpnb");
console.log(formdata.get("name"));//dwpnb
//删除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){
            //...
        }
    }
}
FlowPortal BPM 流程管理 FlowPortal采用微软.net技术,能进行可视化免编程的业务流程管理(BPM)平台,经上海易正信息技术有限公司经过10年研发而成。 现该系统已广泛应用于政府、制造、零售、服务、地产等行业领域。 一、能自实施的BPM系统平台 借助内置的微软asp. net规格的表单设计器XForm Designer及其附带的丰富的表单控件元素,IT人员无需编程就可以快速实现表单的电子化迁移,并且制作出来的电子表单使用友好,功能丰富具有专业水准。 一体化完整的BPM解决方案,彻底的免编程设计,从拖拉式流程设计器、表单设计器、报表设计器均符合免编程设计原则,并且,所有产品包括组织结构管理,电子表单、流程设计、报表设计全部符合微软产品用户已有的使用习惯。 基于为广大IT人员熟悉的通用标准,流程描述语言使用微软C#标准,表单使用微软asp. net标准。 二、充分整合现有资源 FlowPortal. net开放的体系架构允许将企业现有IT系统中的组织架构、用户信息,整合到BPM系统使用,不管他们是位于AD、HR还是位于特有的IT系统内。 业务流转时,可以集合存储在不同系统中的数据建立复合业务实体,比如:存储在ERP中的客户、产品信息,存储在HR系统中的人事信息等等 自动化不同系统中业务数据的处理,比如:采购审批通过时,自动在ERP中生成PR单,人事入职流程中,自动在各个系统中建立用户信息。 借助可插拔的体系架构,通过第三方开发,实现对现有信息和系统的利用,比如利用企业特有业务系统存储在InfoSys数据库内的信息。 通过可嵌入的组件,将BPM集成到SharePoint、企业现有IT系统的框架内。 三、实现无限可能 流程定义时,赋予企业用户使用微软C#扩展流程功能的能力,比如用C#表达逻辑实现一个会签表决规则,又如:流程提交时使用HR系统中的数据验证申请合法性。 表单设计上,借助微软asp. net技术,扩展表单功能,由于表单设计器生成的是标准的asp. net表单,使得企业可以借助微软asp. net的强大功能实现复杂的需求。 可插拔的体系架构,允许企业将BPM体统和企业现有业务系统整合到一起,比如:利用企业现有的弹出式消息系统发送BPM通知消息。 四、有效保障流程管理工作持续、深入开展 可靠、稳定、高效的系统使得BPM系统深入人心 快速实施能力、良好的最终用户使用体验让IT部门轻松,使用者满意,会促使更多的流程需求被建议并实施优异的可扩展能力,为确保IT部门始终有能力满足最终用户的各种需求提供保障。 FlowPortal. net的客户都在持续深入得使用BPM系统,新的流程需求被持续提出并实施上线,不断拓展到新的工厂、事业部门、甚至拓展到集团内其它国家和地区的工厂、企业。 五、随时随地获得所需信息 企业可以使用内置的报表工具按需定制报表,实时查看企业关键业务数据。 FlowPortal. net的报表可以执行数据的钻取,渐入式分析,查询,图形化展示。 FlowPortal. net的报表可以跟据流程的权限定义,使得每个部门的领导只看到各自管辖部门内员工所发起业务的统计数据。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

厚渡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值