楼主目前只会原生的ajax进行下载,哪位大佬知道使用jquery ajax进行下载的可以一起讨论一下
//设置等待动画(良好的交互)
var index = layer.load(1, {
shade: [0.1, '#fff'] // 0.1透明度的白色背景
});
var xmlRequest=getXMLRequest();
xmlRequest.open("POST", url, true);
xmlRequest.responseType = "blob";
xmlRequest.setRequestHeader("contentType","text/html;charset=uft-8"); // 指定发送的编码
xmlRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
xmlRequest.onload = function() {
if (this.readyState == 4 && this.status == 200) {//当响应成功且数据接收完成时将数据传给浏览器保存到本地
try{
var data = this.response;
//存储二进制的文件数据
var blob = new Blob([data], {type: "application/x-download"});//type:application/x-dbf
var contentDisposition = xmlRequest.getResponseHeader('content-disposition');
var fileName = contentDisposition.substring(contentDisposition.lastIndexOf("=") + 3,contentDisposition.length - 1);
if (window.navigator.msSaveOrOpenBlob) {//兼容IE
navigator.msSaveBlob(blob, fileName);//将文件保存到本地
} else {
var link = document.createElement('a');
//创建一个指向二进制文件数据的url,并绑定到a标签
link.href = window.URL.createObjectURL(blob);
//设置下载文件的名称
link.download = fileName;
//跳转
link.click();
//废弃这个指向二进制文件数据的url
window.URL.revokeObjectURL(link.href);
};
}catch(err){
layer.msg("下载失败!", {time: 2000,icon: 2});
console.error(err);
}
};
//关闭动画
layer.close(index);
};
xmlRequest.send("reportDate="+reportDate);
//上面使用了 try catch避免js报错导致动画无法关闭