记录一下ajax提交表单的一二知识点

最近看大佬的springboot项目的时候,看到一个有意思的地方.平时我上传文件只用过提交form表单的方式,今天看到了用ajax异步上传文件,使用的事formdata,第一次见,就记录一下.

  1. var data = new FormData(document.querySelector(selectors));这里的selectors可以是元素的id,class,或者标签名;querySelector获取匹配的第一个元素,如果想获取多个,那么请用querySelectorAll()方法替代;然后就初始化了formdata对象;formdata除了这种初始化方式外,还可以通过append()方法进行添加数据,使用方式和java中的StringBuffer.append()方法是一样的使用append方法的时候,value值可以是blob,file和String,如果不是blob和file类型就会转换成String类型;formdata是可以将数据对象编译成键值对的,如果表单的enctype属性设置为multipart/form-data则需使用submit()方法提交.
  2. 通过ajax提交数据,这里有个地方需要注意一下:
    var fd = new FormData(document.querySelector("form"));
    var url = '';// 指定的后端地址
    fd.append("CustomField", "This is some extra data");
    $.ajax({
      url: url,
      type: "POST",
      data: fd,
      processData: false,  // 不处理数据
      contentType: false   // 不设置内容类型
    });
    如果processData选择了true,哈哈哈,那前端js一定会报这个错误滴,contentType设置为true则会报org.springframework.web.multipart.MultipartException: Current request is not a multipart request这个错误;所以不要尝试改变这里了;在java后台进行处理文件流,这里是通过MultipartFile[]数组接的文件流.
  3. 我们也可以使用jquery-form的ajaxsubmit()方法进行提交表单,上传文件.这样的好处就在于提交之后不会跳转页面.另外还有ajaxForm()方法可以实现这个效果.但是ajaxForm()不能主动提交.

 

        本文参考博客地址(如有需要,请留言联系删除,谢谢!):

       https://developer.mozilla.org/zh-CN/docs/Web/API/FormData/Using_FormData_Objects

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值