1. 程式人生 > >關於ajax提交file上傳檔案型別的表單的一些例項及遇到的問題和解決辦法

關於ajax提交file上傳檔案型別的表單的一些例項及遇到的問題和解決辦法

ajax提交的表單有兩種情況:

第一種:input type型別沒有file上傳檔案型別的表單

第二種:input type型別有file上傳檔案型別的表單

之所以分為兩種:是因為原生ajax是不能提交檔案的,因為ajax與後臺的通訊是通過字串的.

 

第一種無file型別表單的ajax上傳方式:

以下寫的JQuery語法的ajax:

導jQuery包

<script src="jQuery.1.8.3.js" type="text/javascript"></script>

$.ajax({
url:"<%=request.getContextPath()%>/UserServlet?operator=webLoadPhoto",
type:"post",
data: $("#form1").serialize(),
success:function(data) {

}

error:function(data){

}
}) 

引數解釋:

  1. url:傳送請求的地址
  2. type:請求的方式  get/post
  3. data:繫結表單id為form1,   serialize()方法表示將這個表單序列化
  4. success : function(){}:   ajax提交成功後的回撥函式
  5. error:function(){}:ajax提交失敗後的回撥函式

上面這種是最簡單的無file型別的表單提交,網上還有其他寫法,如果想要了解其他寫法的話我後續會寫上

 

 

第二種有file型別表單的ajax上傳方式:

 

由於上傳file型別的表單步驟雖然多,但是仔細看是不難的!建議大家有耐心的去看我的解說

先從網上下載一個jQuery.form.js提交表單的外掛

地址:https://plugins.jquery.com/form/

 

導jQuery包

<script src="jQuery.1.8.3.js" type="text/javascript"></script>

<script src="jQuery.Form.js" type="text/javascript"></script>

$("#upload").click(function(){   //某個按鈕的點選事件

 

 

document.getElementById("form1").encoding="multipart/form-data";      

//  注意上面第一點:file型別表單需要把表單的 enctype屬性值設為   enctype="multipart/form-data"   讓後臺知道這是一個二進位制表單提交型別.

有時候這個enctype會由於一些問題導致後臺識別不了是二進位制表單提交,如果有這種情況,enctype="multipart/form-data" 換成   encoding="multipart/form-data" 或者兩個一起寫上去


var option = {
url :"<%=request.getContextPath()%>/UserServlet?operator=webLoadPhoto",
type :"post",
clearForm:false,
resetForm:false,
success : function(data) {
alert('上傳成功!');

}
};

})
$("#form1").ajaxSubmit(option);
return false;

 

)}

 

引數解釋:

    var option是一個JavaScript物件的定義

  1. url:傳送請求的地址
  2. type:請求的方式  get/post
  3. clearForm:表示提交ajax後是否清空表單字面值    (input type=text     框這裡有你輸入的值例如  11111,如果clearForm值為true,那麼ajax提交後會清空框上的值11111)
  4. resetForm:表示提交ajax後是否重置表單值      (input type=text     框這裡有你輸入的值例如  11111,如果resetForm值為true,那麼ajax提交後會清空 框上的值11111,同時重置成剛載入表單時候的input type=text的樣子。)
  5. 第三第四點注意區別!
  6. success : function(){}:   ajax提交成功後的回撥函式
  7. error:function(){}:ajax提交失敗後的回撥函式
  8. $("#form1").ajaxSubmit(option); 是jQuery.form.js的一個ajax提交表單的方法,它可以優秀的把含有file型別的表單提交給後臺

  

  ps:reset是重置成最初狀態,最初狀態是可能有預設值的
          clear是清空form控制元件