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
相關文章
相關標籤/搜索