HTML5中FormData对象的使用

来源:互联网 发布:淘宝卖家群聊 编辑:程序博客网 时间:2024/05/18 17:02

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>
0 0
原创粉丝点击