HTML5中FormData对象的使用

xiaoxiao2021-02-27  319

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>
转载请注明原文地址: https://www.6miu.com/read-1574.html

最新回复(0)