FormData实现异步传送带文件的表单

今天写项目有个需求,需要异步将表单传到服务器,本来$post一下的事,但是因为表单中含有文件,选择的图片,结果搞了一下午,试了几个插件,像jQuery.form.js,都没用,最后多方查找,看到JS中新增的类FormData可以实现上传,博主抱着试试看的态度,用了一下,可能因为上传图片还有点卡,不过还是成功了,值得高兴,以后这类问题就这样解决了。

--------------------------------------------------------------------------------华丽的分隔线-----------------------------------------------------------------------------------------------------------------------------------------

function exeAlterSchinfo(){
			alert("开始进行异步处理");
			var formData=new FormData($("#alterSchinfoFm")[0]);
				 	$.ajax({  
				          url: 'cmAdmin_exeAlterSchinfo.action' ,  
				          type: 'POST',  
				          data: formData,  
				          async: true,  
				          cache: false,  
				          contentType: false,  
				          processData: false,  
				          success: function (returndata) {  
				              alert(returndata);  
				          },  
				          error: function (returndata) {  
				              alert(returndata);  
				          }  
				     });  

alterSchinfoFm是表单的id,至于取[0],stackoverflow上的解释是:

this code returns a jQuery object($('form')) and pass a HTML element to FormData (get(0)).

then in ajax request: data: new FormData(form),

不然会报

Error in Sending Form file with form using AJAX错误

contentType和processData也是需要的,否则会报:

'append' called on an object that does not implement interface FormData

不明白为啥报这个错,不填这两个属性,但是解决了就好了。
参考网址:
3. 错误1
4. 错误2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值