什么是formdata

FormData是Ajax2.0(XMLHttpRequest Level2)提供的一种将form表单元素name和value组合成键值,实现表单数据的序列化,从而减少from表单元素的拼接,提高工作效率对的接口,以方便将form表单数据通过XMLHttpRequest.send() 方法发送到后端,可以使用该对象来处理form表单元素并方便的进行文件上传。

FormData主要用途

1.将form表单元素的name和value组合成键值对,实现表单数据序列化,提高开发效率。

2 异步上传文件。

FormData用法

初始化
创建一个空对象实例。
var myform = new FormData();
复制代码

使用已有的表单来初始化

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

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

// 获取页面已有的一个form表单
var form = document.getElementById("myForm");
// 用表单来初始化
var formData = new FormData(form);

**FormData.append()**向 FormData 中添加新的属性值,FormData 对应的属性值存在也不会覆盖原值,而是新增一个值,如果属性不存在则新增一项属性值。

**FormData.delete()**从 FormData 对象里面删除一个键值对。

FormData 对象能够设置三种类型的值,string、Blob、File,所以我们不需要转换格式,可以直接传文件,当我们传递 File 到 formatData 层,会直接被 append 到 FormData 对象里,且可以通过 get 获取到值,然后发送请求到服务端,我们能从浏览器入参中清晰的看到 d 、e 参数的类型是 binary,因为就是二进制的文件类型,这样服务端接到值之后很方便获取。

每一个参数之间都有一个 ------WebKitFormBoundary *** 区分开,这实际上是 FormData 的规范标志,后面的字符串是浏览器帮我们自动创建的,以 ------WebKitFormBoundary *** 作为分隔符,也作为开始和结尾,其内容主要有 Content-Disposition、Content-Type 等,其中 Content-Disposition 是必选项, name 属性代表着表单元素的 key,filename 则是上传文件的名称,也可以使用 FormData 第三个参数更改 ,另外,我在发送请求时,并没有更改请求头里面的 Content-Type,但实际上我们看到的是正确的 multipart/form-data,这是因为现在的浏览器比较智能,当客户端未设置请求头的 Content-Type 时,请求参数为对象时,某一些浏览器会自动帮我们在 请求头中添加 Content-Type: text/plain,如果传输的数据是 FormData,也会自动帮我们加上 Content-Type: multipart/form-data 等,可能不同浏览器表现行为不一样,但是最好的方式就是客户端与服务端约定好 Content-Type 类型,固定传递。

ajax提交数据中formdata的使用相关推荐

  1. ajax提交数据给谁,jquery ajax提交数据给后端

    大家好,今天铁柱兄给大家带一段jquery ajax提交数据给后端的教学. 初学javaweb的同学前端提交数据基本上都是用form表单提交,这玩意儿反正我是觉得不太好玩.而JavaScript aj ...

  2. 用ajax提交数据到ashx用JSON.stringify格式化参数后在服务器端取不到值?[转载至:http://q.cnblogs.com/q/34266/]...

    用ajax提交数据到ashx用JSON.stringify格式化参数后在服务器端取不到值?[转载至:http://q.cnblogs.com/q/34266/] 前台代码: $(function () ...

  3. ajax提交成功清空表单,Ajax提交数据后,清空form表单

    按钮不同,页面相同,还需要显示的数据不同,这里会由于页面的缓存问题,导致,每次点开这个页面显示的数据相同. 这不是我们想要的.这就需要清楚表单数据了. 如下: $('#myform')[0].rese ...

  4. ajax提交数据到后台php接收

    在网上看了很久,发现数据的利用ajax提交数据到后台其实很简单,但是很多讲解的并不清楚,对于初学者来说,很多真的是看着有点糊涂,拿来直接用,又想去了解怎么回事,其实利用ajax提交数据到后台是非常的简 ...

  5. Django中Ajax提交数据的CSRF问题

    错误信息: Forbidden (CSRF token missing or incorrect.): 什么是CSRF: django为用户实现防止跨站请求伪造的功能,通过中间件 django.mid ...

  6. ajax提交数据被截断的问题

    最近做一个博客发布程序,使用ajax向后台提交数据,发现数据总是被截断,网上搜了些资料,罪魁祸首是特殊字符转义后的&惹的祸,现将解决办法记录下,以备后查 获取数据: var data=cked ...

  7. ASP.NET前台html页面AJAX提交数据后台ashx页面接收数据

    摘要:最近在写网站,好不容易弄好了需求又变了,没错企业的门户网站硬要弄成后台管理系统一样,没办法作为小工的我只能默默的改.前台HTML页面需要提交数据到后台处理,又不能用form表单,于是乎研究了1天 ...

  8. html页面ajax提交数据,ajax请求提交form表单

    AJAX表单提交以及数据接收 方式一 手工收集所有的用户输入,封装为大的"k1=v1&k2=v2-"键值对形式,使用$.post(url, data,fn)把数据提交给服务 ...

  9. web项目通过ajax提交数据太大报错

    通过ajax提交大数据 $.ajax({ url:"", data:{xx:xx} }) 这样子大大的字符串四五个一块提交.导致的提交的请求太大 idea报错 浏览器页面报错 解决 ...

最新文章

  1. OAuth 2.1 的进化之路
  2. 数据库存取BLOB类型音乐文件的过程及常见错误
  3. Spring Quartz的原理
  4. 贾跃亭造车实验室首曝光:正积极推进FF91量产工作
  5. python中bind的用法_Javascript中bind()方法的使用与实现
  6. 一图看尽编程语言十年热度变化!
  7. .net中的各种委托(Delegate、Action、Func)
  8. 计算机知识脑筋急转弯,10道智力题图片及答案大全|2018年朋友圈最烧脑的10道智力题 附答案_最火软件站...
  9. 英文参考文献格式引用方法分析
  10. python爬取淘宝数据魔方_淘宝数据魔方是什么(淘宝数据魔方技术架构解析)
  11. 巴菲特十大量化选股经
  12. 数学狂想曲(十三)——勾股定理, Menelaus‘ Theorem
  13. git 提交代码防止尾行序列LF转为CRLF
  14. 梦幻西游玩家最多的服务器,都说你是《梦幻西游》老玩家,这5个著名服务器你知道几个?...
  15. 数据论《西游记》关系网:猪八戒最主动喜欢别人
  16. mysql5.7增加ssl认证(1)
  17. 把一个合数分成质数的乘积
  18. 学计算机电脑屏幕小可以吗,电脑显示器大小怎么调整
  19. canvas基本使用,以及七巧板绘制
  20. 【Linux】【操作】Linux环境运行Windows程序方式一览(全网最全)

热门文章

  1. android 讯飞语音评测,非同凡响的语音输入法——讯飞Android输入法评测
  2. 中小型企业网络局域网实例-核心交换机配置2
  3. uos安装金蝶中间件
  4. 计算机办公软件应用试题汇编,《办公软件应用(Windows平台)Windows7、Office2010试题汇编》...
  5. 【回顾从前】2012年思科认证考试等级划分
  6. fdisk分区emmc操作
  7. 央视辟谣WiFi辐射危害:孕妇穿辐射装多此一举
  8. 拥抱浪潮 -- 吴军的《浪潮之巅》读后感
  9. 爬虫工具 - selenium
  10. 怎样使html兼容各个浏览器,兼容各个浏览器的技巧