Ajax非同步上傳檔案

2021-09-01 22:07:40 字數 1448 閱讀 7940

[b][color=green][size=large]近來,專案有個小需求需要使用到ajax非同步上傳檔案,本來ajax是不支援上傳檔案的,但是可以通過iframe技術模擬實現,非同步提交,原理實際上就是利用了乙個隱藏的iframe子窗體,把提交的表單的target指向這個隱藏的窗體,在提交時,瀏覽器的頭部還會出現載入資訊,但是頁面卻沒有任何重新整理,勉強實現了ajax的非同步上傳。

好了,下面開始進入正題,散仙簡單記錄下,究竟該怎麼使用ajax非同步上傳檔案,在實現的過程中,也遇到了一些小問題,總算皇天不負有心人,都一一解決,今記錄在此,免後繼者重蹈折。

[/size][/color][/b]

[b][color=olive][size=large]實現這個功能,需要jquery的乙個js檔案,如下所示:[/size][/color][/b]

ajaxfileupload.js

[b][color=olive][size=large]首先,我們需要把這個包匯入工程中,當然還得有jquery的核心包,然後我們就可以使用ajax上傳的功能了,**如下:[/size][/color][/b]

[b][color=olive][size=large]散仙的後台是struts2的action,後台就是我們常規的一些寫法,因為使用了ajax提交,所以就沒必要在前台**裡寫入form表單來提交了,後台部分**如下:[/size][/color][/b]

/**

* 上傳的檔名

* **/

public listupload;

private listuploadfilename;//注意要與檔名一致

private listuploadcontenttype;//檔案型別一致

[b][color=green][size=large]然後,就可以正常使用了。

使用過程中,發現2個問題:

問題一,在使用ajax上傳時,datatype型別,最好寫成大寫的json,散仙一開始的時候寫的小寫結果,發現不能正常使用,可能是乙個bug。

解決辦法就是把datatype的值寫成大寫的json,即可。

問題二, 在json的集合資料返回到前台是,資料上莫名其妙的帶了個pre的html標籤,導致無法正常解析json,這個異常散仙在網上也找了一些解決辦法,通常的是把後台的setcontenttype裡面設定頭部資訊為text/html,經過此步,pre標籤的問題是可以解決了

但是在前台的時候,仍不能正常顯示,最後改了ajaxfileupload.js的原始碼,此問題得以解決。

解決辦法如下圖所示:

[/size][/color][/b]

[img]

[b][color=green][size=large]至此,所有問題都得到解決,最後散仙附上ajaxfileupload.js檔案,希望能夠對正在使用中的朋友有所幫助。

[/size][/color][/b]

Ajax檔案非同步上傳

ajax檔案非同步上傳 註明 既然有了表單上傳為什麼又要ajax上傳呢?因為表單上傳過程中,整個頁面就重新整理了!ajax非同步上傳就可以達到只重新整理區域性位置 選擇檔案 type file id file1 type button id upload value 上傳 src wait.gif ...

AJAX非同步上傳檔案

定義form表單 定義ajax非同步上傳邏輯 form表單提交按鈕定義 function upload updategoods 設定監聽 獲取檔案上傳進度 xhr.upload.onprogress function a 設定監聽 獲取響應內容 xhr.onreadystatechange func...

Spring使用Ajax非同步上傳檔案

2.多檔案上傳 檔案上傳 type file id file name filename 建立formdata物件,用於儲存ajax上傳的引數資訊 var formdata newformdata 獲取要上傳的檔案file var files document.getelementbyid file...