Ajax请求文件下载操做失败的缘由和解决办法

使用Poi作excel表格导出功能,第一个想到的就是用Ajax来发送请求,可是Ajax和后台代码都执行了,就是没法下载文件。ajax

前台代码

 1 function exportExl(){
 2             var form = $("input:hidden").serialize();
 3             $.ajax({
 4                 url: 'ReportStatistics/exportExcelProcurement.do',
 5                 type: 'GET',
 6                 //dataType: 'json',
 7                 data: form,
 8                 error: function(XMLHttpRequest, textStatus, errorThrown) { 
 9                     alert(XMLHttpRequest.status); 
10                     alert(XMLHttpRequest.readyState); 
11                     alert(textStatus); 
12                     }, 
13                 success:function(data){
14                     console.log("success");
15                 }
16             });

失败的缘由:

那是由于response缘由,通常请求浏览器是会处理服务器输出的response,例如生成png、文件下载等,然而ajax请求只是个“字符型”的请求,即请求的内容是以文本类型存放的。文件的下载是以二进制形式进行的,虽然能够读取到返回的response,但只是读取而已,是没法执行的,说白点就是js没法调用到浏览器的下载处理机制和程序。json

解决方案:

使用 window.location.href  改变当前页面的url进行跳转下载。
浏览器

 

1 function exportExl(){
2             var form = $("input:hidden").serialize();
3             window.location.href = "ReportStatistics/exportExcelProcurement.do?"+form;
4         }
相关文章
相关标签/搜索