Ajax请求导出Excel的问题【ajax不能下载文件】
生活随笔
收集整理的這篇文章主要介紹了
Ajax请求导出Excel的问题【ajax不能下载文件】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近要給后臺添加操作日志導出的功能,后臺已經生成.xls文件,本來想只要ajax請求下就完事兒,想象總是美好的,可不管我怎么ajax,想了各種可能原因也無法解決。
問題描述
前端發送ajax【get/post】請求,后端生成excel文件,最后用response輸出文件流,沒有報錯也沒有文件下載提示。
最后網上搜索了一波,遇到過這個問題的還是不少,問題出在ajax本身,解決方法和原因也都找到。
原因
ajax請求只是個“字符型”的請求,即請求的內容是以文本類型存放的。文件的下載是以二進制形式進行的,ajax沒法解析后臺返回的文件流,所以無法處理二進制流response輸出來下載文件。
解決方法
1)使用window.location.href=dataUrl;就可以實現。
當使用window.loaction.href=dataUrl后,點擊“導出操作日志”時,文件下載頁面也跳轉到了datatUrl的地址,使用了history.go(-1)加載歷史列表里的上一頁解決跳轉問題,后來想起用a標簽做的按鈕,使用href=“javascript:void(0);”便可。
href=“javascript:void(0);”意為執行一個js的空方法,這樣就執行了鏈接,頁面不動。
????????2)使用隱藏iframe實現無刷新下載文件
<a href="#" οnclick="downloadFile()">download</a><iframe id="ifile" style="display:none"></iframe>function downloadFile(){var dom=document.getElementById('ifile');dom.src="http:xxxx.com";}隱藏iframe,設置src下載地址,點擊事件觸發事件函數實現下載。總結
以上是生活随笔為你收集整理的Ajax请求导出Excel的问题【ajax不能下载文件】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 人人可用,永洪桌面分析工具入门指南,数据
- 下一篇: 东软睿道mysql_java学习(东软睿