一、现存的问题
使用传统的form表单提交参数(或者文件)时,只要提交就会有以下两个问题:
1、无法处理回调函数
2、页面会刷新
二、概述
FormData 是 XMLHttpRequest Level 2 新增的一个对象,利用它来模拟表单提交,当然最大的优势就是可以上传二进制文件。
FormData 对象的使用:
1.用一些键值对来模拟一系列表单控件:即把form中所有表单元素的name与value组装成一个queryString。
- 异步上传二进制文件。
三、使用
1.FormData对象的操作方法,全部在原型中,自己本身没任何的属性及方法。
FormData对象,可以把所有表单元素的name与value组成一个queryString,提交到后台。 在使用ajax提交时,使用FormData对象可以减少拼接queryString的工作量(queryString是查询字符串,http查询字符串由url中?后面的值指定)
当form以GET方式向页面发送请求数据时 (如数据含有不安全字符,则浏览器先将其转换成16进制的字符再传送,如空格被转换成%20时 ) ,web server将请求数据放入一名为QUERY_STRING的环境变量中;Request.QUERY_STRING方法是从这一环境变量中取出相应的值,并将被转成16进制的字符还原。
ps:当我们需要提交form之外的参数,可以使用append
例:
//初始化FormData函数,传入的是一个form表单
var formData = new FormData($("#form")[0]);
formData.append('sgid',_sgId); 添加表单之外的参数