Web开发使用JS的异步请求下载文件浏览器无响应

Web开发使用JS的异步请求下载文件浏览器无响应

1、前端页面关键代码

...
<button class="layui-btn layui-btn-sm" lay-event="downloadReport">下载报告</button>
...

<script>
...
	if(obj.event === 'downloadReport'){
                layer.msg("正在生成报告....,请稍等.....",{icon:6,time:2000};
                $.get("testReport/downloadReportById",{"testId":data.id});
            }

....
</script>


       前端使用的是Layui的模板语法。
点击下载按钮浏览器没有响应,但谷歌开发者工具捕捉到了请求信息:
在这里插入图片描述
         这说明后端没有问题,下载的文件也被传过来了,但是不是我们想要的格式,上面这一推东西到底是怎么回事了?
         原来JQuery的ajax函数的返回类型只有xml、text、json、html等类型,没有“流”类型,所以我们要实现ajax下载,不能够使用相应的ajax函数进行文件下载。但可以用js生成一个form,用这个form提交参数,并返回“流”类型的数据。在实现过程中,页面也没有进行刷新。
         弄清楚了浏览器无响应的原因,解决方法就很简单了,我也懒得写JS了,直接将按钮换为超链接,点击超链接直接下载文件就行了。

<a class="layui-btn layui-btn-sm" href="testReport/downloadReportById?tested"+d.id>下载报告</a>

         博主码字不易,看完如果有一点收获,不妨点个赞!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值