HTML5中FormData对象的使用

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>
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值