JQuery的ajax函數(shù)的返回類(lèi)型只有xml、text、json、html等類(lèi)型,沒(méi)有“流”類(lèi)型,所以我們要實(shí)現(xiàn)ajax下載,不能夠使用相應(yīng)的ajax函數(shù)進(jìn)行文件下載。但可以用js生成一個(gè)form,用這個(gè)form提交參數(shù),并返回“流”類(lèi)型的數(shù)據(jù)。在實(shí)現(xiàn)過(guò)程中,頁(yè)面也沒(méi)有進(jìn)行刷新。
1. 使用ajax,ajax的返回值類(lèi)型是json,text,html,xml類(lèi)型,或者可以說(shuō)ajax的發(fā)送,接受都只能是string字符串,不能流類(lèi)型,所以無(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表單中添加查詢(xún)參數(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); //將查詢(xún)參數(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ì)大家有所幫助!
標(biāo)簽:遼源 鄭州 林芝 海南 邢臺(tái) 洛陽(yáng) 舟山 內(nèi)蒙古
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Ajax實(shí)現(xiàn)文件下載》,本文關(guān)鍵詞 Ajax,實(shí)現(xiàn),文件下載,Ajax,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。下一篇:Ajax上傳圖片的本質(zhì)