小編給大家分享一下Ajax如何實現文件下載,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創新互聯公司客戶idc服務中心,提供重慶服務器托管、成都服務器、成都主機托管、成都雙線服務器等業務的一站式服務。通過各地的服務中心,我們向成都用戶提供優質廉價的產品以及開放、透明、穩定、高性價比的服務,資深網絡工程師在機房提供7*24小時標準級技術保障。
JQuery的ajax函數的返回類型只有xml、text、json、html等類型,沒有“流”類型,所以我們要實現ajax下載,不能夠使用相應的ajax函數進行文件下載。但可以用js生成一個form,用這個form提交參數,并返回“流”類型的數據。在實現過程中,頁面也沒有進行刷新。
1. 使用ajax,ajax的返回值類型是json,text,html,xml類型,或者可以說ajax的發送,接受都只能是string字符串,不能流類型,所以無法實現文件下載,強用會出現response沖突。如果非要使用ajax的話,只能通過返回值得到生成的文件相關url。然后在回調函數里通過創建一個iframe,并設置其src值為文件url,或者一個對文件生成流的處理url,這樣操作來實現文件下載且頁面無刷新。
2. 不使用ajax,通過dom動態操作或創建iframe,form的方式來實現,在下載文件的同時實現頁面不刷新,其中iframe的src可以是文件地址url來直接下載文件,也可以是流處理url通過response流輸出下載,form的是流處理url通過response流輸出下載,dom動態操作的時候實現文件下載,且頁面無刷新。要在下載的同時實現進度條的話,可以創建一個定時任務,每隔一定時間就向后臺發送請求,通過公用的對象,比如session,來取得文件下載的處理進度。
var title=$("input[name='gjzSelect']").val(); var rqTime = $(".ui-datepicker-time").val(); var ddd= rqTime.split("一"); var startTime=ddd[]; var endTime=ddd[]; var form = $("