首頁  >  文章  >  web前端  >  Ajax實作檔下載功能詳解

Ajax實作檔下載功能詳解

php中世界最好的语言
php中世界最好的语言原創
2018-04-24 17:09:143726瀏覽

這次帶給大家Ajax實作檔案下載功能詳解,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("导出成功!");
} 
}); 
--%>

我相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

jquery中ajax執行順序調整

#Ajax與$.ajax實例詳解

#jQuery怎麼做出監控頁面ajax請求

#

以上是Ajax實作檔下載功能詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn