表单数据上传

情况一:

  一、当表单文件处于无任何处理状态时,用submit提交直接上传; 但这种方式上传,数据无任何处理;(极少使用);

  但是传统的表单提交会导致页面刷新,但是有些情况下,我们并不希望页面被刷新,这种时候,我们都是使用ajax的方法进行请求的

情况二:

  二、当表单文件使用$.ajax上传,表单中无file文件上传时,数据要进行序列化处理,要将表单中的数据转为json数据格式

  1、序列化serialize()方法 重点内容

  格式:var data=$("#formid").serialize();,其中formid为表单id

  功能:将表单内容序列化成一个json结构的对象,注意不是json字符串。

  比如,[{"name":"lihui", "age":"20"},{...}] 获取数据为 jsonData[0].name

  这样在ajax提交表单数据的时候,就不用一一列举出每一个参数。主需要将data参数设置为 $("#formid").serialize() 即可。

  例子

<form id="submit_form">
  <input type="text" name="text" value="姓名"/>
  <pre name="code" class="html">
  <input type="url" name="url" value="网址"/>
<input type="email" name="email" value="电子邮件"/>
  <input type="button" value="submit"id="submit" />
</form> //提交方法
var formData=$("#submit_form").serialize();
$.ajax({
type : 'POST',
url : url地址,
data : formData,或者data:{$("#submit_form").serialize()},或者单个的参数data:{name:'value'}
async : false,
cache : false,
contentType : false,
processData : false,
success : function(data) {
//关闭弹框
alert("成功");
},
error : function(data) {
alert("error!");
}
});
//序列化表单对象

  注意:通过$("#submit_form").serialize();可以对表单进行序列化,从而将form表单中的所有参数传递到服务端。但是上述方式,只能传递一般的参数,上传文件的文件流是无法被序列化并传递的。

情况三 

  二、当表单文件使用$.ajax上传,表单中有file文件上传时,表单序列化将无法传递文件流。不过如今主流浏览器都开始支持一个叫做FormData的对象,有了这个FormData,我们就可以轻松地使用ajax进行文件上传了。

  1、FormData方法介绍

  XMLHttpRequest Level 2添加了一个新的接口FormData.利用FormData对象,我们可以通过JavaScript用一些键值对来模拟一系列表单控件,我们还可以使用XMLHttpRequest的send()方法来异步的提交这个”表单”.比起普通的ajax,使用FormData的最大优点就是我们可以异步上传一个二进制文件。

  所有主流浏览器的较新版本都已经支持这个对象了,比如Chrome 7+、Firefox 4+、IE 10+、Opera 12+、Safari 5+。

  参见:https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest/FormData

  先要将表单序列化 定义一个变量存储并处理表单

  例子:

<form enctype="multipart/form-data" method="post" id="表单ID">
var formdata=new FormData($("#表单ID")[0]);
$.ajax({
url : url,
type : 'POST',
data : formData,
async : false,
cache : false,
contentType : false,
processData : false,
success : function(data) {
 //上传成功
  alert("成功");
},
error : function(data) {
  alert("添加失败!");
}
});
//序列化表单对象

  参见:https://developer.mozilla.org/zh-CN/docs/Web/Guide/Using_FormData_Objects

  使用FormData,进行Ajax请求并上传文件

  这里使用JQuery,但是老版本的JQuery比如1.2是不支持的,最好使用2.0或更新版本

  

最新文章

  1. UniversalImageLoader的一个小问题
  2. FORM触发器执行顺序
  3. JS中 toString() &amp; valueOf()
  4. OO的设计原则
  5. UVa 10088 - Trees on My Island (pick定理)
  6. xml、 Dao service 三层参数以及对应关系
  7. 禁用Java DNS缓存-Disable DNS caching
  8. static的加载先后顺序
  9. SpringMVC知识点小结
  10. Spring mybatis源码篇章-NodeHandler实现类具体解析保存Dynamic sql节点信息
  11. ES6 class的继承使用细节
  12. php&amp;amp;&amp;amp;页面静态化
  13. python基础(str,list,tuple)
  14. javascript之类型转换
  15. vue通过ID(参数)修改URL复用同一个页面(组件)不重新加载的问题
  16. Java使用PropertyDescriptor获取实体类中私有属性的值,并给私有属性赋值
  17. Selenium WebDriver使用IE浏览器 属性设置
  18. Postgresql 创建账户,修改密码
  19. python logging 实现的进程安全的文件回滚日志类
  20. 20165301陈潭飞2017-2018-2 20165301 实验三《Java面向对象程序设计》实验报告

热门文章

  1. 《SQL必知必会》笔记
  2. codeforces 480D
  3. robotium测试创建java文件和junit文件区别
  4. Linux-压缩与归档
  5. INDEX--从数据存放的角度看索引2
  6. C# 加特效
  7. 《PHP, MySQL, Javascript和CSS》读书随手记----MySQL篇
  8. 【文文殿下】P3737 [HAOI2014]遥感监测
  9. 02_python_while循环/格式化输出/逻辑运算
  10. GoLang学习之变量定义和初始化