尝试使用原始ajax发送下载请求,使前台接收下载失败的信息

一般的下载发送请求时,使用的是window.location.href
但是这有一个问题,就是在本地测试和在服务器上测试的时候上传的文件位置不同,很可能找不到下载文件,此时页面就会跳转到一个错误页面,而前台无法接收一个反馈,使页面保持原状
因此尝试使用如下方法使前台可以接收到反馈

用(原始的)ajax来发送请求:

//  1、定义发送请求的url
var url = "/download";
//  2、相当于先试着发请求,看看返回结果是什么
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
//这步至关重要,命令xhr返回给你的是blob(二进制大对象)类型的数据
xhr.responseType = 'blob';
xhr.send();
xhr.onreadystatechange = function () {
    if (xhr.readyState === 4){
    	//当执行完成时
        if(xhr.status === 200){
        	//  3、文件存在且可以下载,则正式发送请求下载文件
            window.location.href = url;
        }else{
        	//文件下载失败,弹出提示
            alert("文件下载失败!");
        }
    }
};

这样做在第一次尝试发请求时,若请求是失败的,后台依旧会报错(这里还未找到解决办法),但前台可以有一个反馈提示,不至于让页面跳转崩掉

猜你喜欢

转载自blog.csdn.net/qq_31222053/article/details/87273260
今日推荐