您好,登錄后才能下訂單哦!
小編給大家分享一下Ajax如何實現文件下載,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
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 = $("<form>"); //定義一個form表單 form.attr('style', 'display:none'); //在form表單中添加查詢參數 form.attr('target', ''); form.attr('method', 'post'); form.attr('action', "<%=basePath%>jiankong/madeExcel.do"); var input = $('<input>'); input.attr('type', 'hidden'); input.attr('name', 'startTime'); input.attr('value', startTime); var input = $('<input>'); input.attr('type', 'hidden'); input.attr('name', 'endTime'); input.attr('value', endTime); var input = $('<input>'); input.attr('type', 'hidden'); input.attr('name', 'title'); input.attr('value', title); $('body').append(form); //將表單放置在web中 form.append(input); //將查詢參數控件提交到表單上 form.append(input); form.append(input); form.submit(); <%-- $.ajax({ url:'<%=basePath%>jiankong/madeExcel.do', cache:false, data:{ 'startTime':startTime, 'endTime':endTime, 'title' :title }, error:function (e){ alert("導出失敗!"); }, success:function (data){ alert("導出成功!"); } }); --%>
ajax是一種在無需重新加載整個網頁的情況下,能夠更新部分網頁的技術,可以通過在后臺與服務器進行少量數據交換,使網頁實現異步更新。
以上是“Ajax如何實現文件下載”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。