js异步方式导出excel文件
解决方法:
以前通过window.open直接通过后台返回文件流到浏览器下载Excel文件,但不能做到监听文件下载是否结束来关闭等待提示框,所以通过以下js方法来实现。
var xhr = new XMLHttpRequest();
var url = this.downloadUrl;
xhr.open("get", url, true);//打开请求
//设置响应类型为blob类型(接受字节流)
xhr.responseType = "blob";
xhr.timeout = 0; // 设置超时时间,0表示永不超时
xhr.onload = function () {//返回成功之后执行的方法
if (this.status == "200") {
//将文件流保存到a标签
let content = this.response;
// 组装a标签
let elink = document.createElement("a");
// 设置下载文件名
elink.download = "filename.xlsx";
elink.style.display = "none";
let blob = new Blob([content]);
elink.href = URL.createObjectURL(blob);
document.body.appendChild(elink);
elink.click();
document.body.removeChild(elink);
} else{
//异常
}
};
xhr.onerror = function (e) {
//错误
};
xhr.ontimeout = function (e) {
//超时
};
xhr.send();//发送请求