今天分享JBolt极速开发平台中使用的异步下载文件的解决方案。
需求场景:
列表查询界面有一个【导出Excel】按钮,需要点击按钮,弹出loading信息框,异步调用后台action,得到数据库数据后生成Excel数据然后响应发送到前端,异步请求拿到数据后,当做文件下载下来。
重点:
异步请求,导出Excel,前端拿到后做成文件下载
解决方案:
1、前端异步请求
点击按钮的时候,执行一个异步请求,去访问Action
导出Excel
//异步下载
function ajaxDownload(url,fileName){
var xhr = new XMLHttpRequest();
xhr.timeout=jboltAjaxTimeout;
xhr.open('GET', url, true);
xhr.responseType = "blob"; // 返回类型blob
//定义请求完成的处理函数
xhr.onload = function () {
// 请求完成
if (this.status === 200) {
// 返回200
var blob = this.response;
var reader = new FileReader();
reader.readAsDataURL(blob); // 转换为base