JQuery的ajax函數(shù)的返回類型只有xml、text、json、html等類型,沒(méi)有“流”類型,所以我們要實(shí)現(xiàn)ajax下載,不能夠使用相應(yīng)的ajax函數(shù)進(jìn)行文件下載。但可以用js生成一個(gè)form,用這個(gè)form提交參數(shù),并返回“流”類型的數(shù)據(jù)。在實(shí)現(xiàn)過(guò)程中,頁(yè)面也沒(méi)有進(jìn)行刷新。
1. 使用ajax,ajax的返回值類型是json,text,html,xml類型,或者可以說(shuō)ajax的發(fā)送,接受都只能是string字符串,不能流類型,所以無(wú)法實(shí)現(xiàn)文件下載,強(qiáng)用會(huì)出現(xiàn)response沖突。如果非要使用ajax的話,只能通過(guò)返回值得到生成的文件相關(guān)url。然后在回調(diào)函數(shù)里通過(guò)創(chuàng)建一個(gè)iframe,并設(shè)置其src值為文件url,或者一個(gè)對(duì)文件生成流的處理url,這樣操作來(lái)實(shí)現(xiàn)文件下載且頁(yè)面無(wú)刷新。
2. 不使用ajax,通過(guò)dom動(dòng)態(tài)操作或創(chuàng)建iframe,form的方式來(lái)實(shí)現(xiàn),在下載文件的同時(shí)實(shí)現(xiàn)頁(yè)面不刷新,其中iframe的src可以是文件地址url來(lái)直接下載文件,也可以是流處理url通過(guò)response流輸出下載,form的是流處理url通過(guò)response流輸出下載,dom動(dòng)態(tài)操作的時(shí)候?qū)崿F(xiàn)文件下載,且頁(yè)面無(wú)刷新。要在下載的同時(shí)實(shí)現(xiàn)進(jìn)度條的話,可以創(chuàng)建一個(gè)定時(shí)任務(wù),每隔一定時(shí)間就向后臺(tái)發(fā)送請(qǐng)求,通過(guò)公用的對(duì)象,比如session,來(lái)取得文件下載的處理進(jìn)度。
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>"); //定義一個(gè)form表單
form.attr('style', 'display:none'); //在form表單中添加查詢參數(shù)
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); //將查詢參數(shù)控件提交到表單上
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("導(dǎo)出失?。?);
},
success:function (data){
alert("導(dǎo)出成功!");
}
});
--%>
以上所述是小編給大家分享的Ajax實(shí)現(xiàn)文件下載的相關(guān)知識(shí),希望對(duì)大家有所幫助!
您可能感興趣的文章:- JQuery的AJAX實(shí)現(xiàn)文件下載的小例子
- Ajax請(qǐng)求二進(jìn)制流進(jìn)行處理(ajax異步下載文件)的簡(jiǎn)單方法
- Jquery Ajax請(qǐng)求文件下載操作失敗的原因分析及解決辦法
- Ajax 生成流文件下載(實(shí)現(xiàn)代碼)
- jQuery的ajax下載blob文件
- 使用Ajax生成的Excel文件并下載的實(shí)例
- jQuery使用動(dòng)態(tài)渲染表單功能完成ajax文件下載
- SpringMVC+Ajax實(shí)現(xiàn)文件批量上傳和下載功能實(shí)例代碼
- PHP使用ajax的post方式下載excel文件簡(jiǎn)單示例
- ztree+ajax實(shí)現(xiàn)文件樹下載功能