您的位置:首页 > Web前端 > HTML5

HTML5中FormData对象的使用

2017-05-04 10:03 429 查看
FormData对象是HTML5的一个对象,目前的已经可以兼容一些主流的浏览器。当然了,如果你的项目还需要兼容IE8之类的低版本浏览器,这个好用的方法注定与你无缘啦。(不过你可以考虑jquery.form.js这种表单插件,同样容易上手)。

FormData在使用的时候可以不使用html代码代码的情况下,向后端提交数据,譬如下面这段代码:

var form = new FormData();
form.append("username","test");
form.append("password",123456);

// 可以这样发送数据
var req = new XMLHttpRequest();
req.open("post", "URL", false);
req.send(form);

// 当然也可以这样
$.ajax({
url:"URL",
type:"post",
data:form,
processData:false,
contentType:false,
success:function(data){
window.clearInterval(timer);
console.log(data);
}
});


当然FormData必然不止这么一个好处啦,FormData对象还支持从form表单中直接提取数据,然后直接提交给后台。

另外值得一提的是,这种方式还可以上传文件内容,参考如下:

html部分

<form id="myform">
<input type="file" name="img"/>
<input type="text" name="username"/>
<input type="button" value="提交" onclick="test();"/>
</form>


js部分

function test(){
var form = new FormData(document.getElementById("myform"));
// var req = new XMLHttpRequest();
// req.open("post", "URL", false);
// req.send(form);
$.ajax({
url:"URL",
type:"post",
data:form,
processData:false,
contentType:false,
success:function(data){
window.clearInterval(timer);
console.log(data);
},
error:function(e){
alert("error!!!");
window.clearInterval(timer);
}
});
get(); //此处为上传文件的进度条
}


参考上面,使用FormData,在构造这个对象的时候,把表单的对象,作为一个参数放进去,就可以了,然后FormData,就会得到这个表单对象里面的所有的参数,甚至我们在表单中,都不需要声明enctype =”multipart/form-data” ,就可以直接提交。

注意:使用FormData提交的时候,大家会注意到表单提交的是request payload,具体有兴趣的同学可以自己百度,它不是之前的Form data提交的,所以后台也是要经过处理的,比如springMVC就需要配置

<!-- 配置nultipartresolver,注意:id名必须这样写,不然会报错 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"></property>
<property name="maxInMemorySize" value="10240000"></property>
</bean>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息