zoukankan      html  css  js  c++  java
  • Ajax请求文件下载操作失败的原因和解决办法

    使用Poi做excel表格导出功能,第一个想到的就是用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无法调用到浏览器的下载处理机制和程序。

    解决方案:

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

    1 function exportExl(){
    2             var form = $("input:hidden").serialize();
    3             window.location.href = "ReportStatistics/exportExcelProcurement.do?"+form;
    4         }
  • 相关阅读:
    C语言学习代码〈二〉
    C语言学习笔记<三 >
    C语言学习笔记<一 >
    C语言学习代码〈四〉
    C语言学习代码〈三〉
    C语言学习笔记<五>
    C语言学习笔记<四>
    C语言学习笔记<二 >
    C语言学习代码<一> .
    周末练习
  • 原文地址:https://www.cnblogs.com/lvjunlong/p/9337005.html
Copyright © 2011-2022 走看看