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

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

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

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上的解释是:ajax

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

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

否则会报异步

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
相关文章
相关标签/搜索