解决浏览器导出Excel出现400的异常!

400 出现的  分析原因:

解决方案一:使用post进行提交表单

一般情况下,我们通过ajax获取数据都是采用get方式获取,但如果ajax的请求url过长时,get方式由于浏览器对url长度不同会导致无法正常获取数据,尤其是IE。

这时候,我们需要通过post请求的方式获取数据,而如果我们需要通过post方式导出Excel表格,则需要通过表单提交的方式导出Excel。

 

 function postExcelFile(params, url) { //params是post请求需要的参数,url是请求url地址
        var form = document.createElement("form");
        form.style.display = 'none';
        form.action = url;
        form.method = "post";
        document.body.appendChild(form);

        for(var key in params){
          var input = document.createElement("input");
          input.type = "hidden";
          input.name = key;
          input.value = params[key];
          form.appendChild(input);
        }

        form.submit();
        form.remove();
      }
      //点击导出按钮导出excel表格
      function openOutExcel(){

        //传递给后台的参数
        var rNO = $("#s_rno").val();
        var rNA = $("#s_rna").val();
        var params = {"rNO":rNO,"rNA":rNA};
        postExcelFile(params, "http://www.xxx.outExcel.action");
      }

 

解决方案二:

原因是Tomcat的header缓冲区大小不够,只需要在server.xml中增加maxHttpHeaderSize字段即可:

<Connector connectionTimeout="20000" maxHttpHeaderSize="8999" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

 

参考文章: https://blog.csdn.net/qq_33036599/article/details/80844430

                   https://blog.csdn.net/lcdaaaa/article/details/80498229

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值