问题描述(见下图):

问题分析:

  1. 400是后端没有接收到请求
  2. 原因是后端高版本的tomcat不会自动对字符串进行转义
  3. 所以,前端把参数值进行转义,即encodeURI(string)

问题处理前代码(传参数用一个字符串传递):

  1. exportExcel(){
  2. // 导出文件list的内容。
  3. let uu=$.getCookie('prefixUrl');
  4. let url=`${uu}/salesReport/exportPublicToExcel`;
  5. let cookie=$.getCookie('sessionId');
  6. // let cookie=encodeURI($.getCookie('sessionId'));
  7. let info=''; //这里是查询条件。
  8. info=`"createYear":"${this.createYear}","createWeek":"${this.createWeek}"`;
  9. //type===3即客户拜访情况时,查看的是月
  10. let type = this.typeListVal
  11. if(type === 3){
  12. info=`"createYear":"${this.createYear}","createMonth":"${this.createMonth}"`;
  13. }
  14. // info = encodeURI(info)
  15. url=`${url}?type=${type}&sessionId=${cookie}&searchParams=${info}`;
  16. // window.location.href=url;
  17. // console.log(url)
  18. window.open(url);
  19. },

问题处理后代码:

  1. exportExcel(){
  2. // 导出文件list的内容。
  3. let uu=$.getCookie('prefixUrl');
  4. let url=`${uu}/salesReport/exportPublicToExcel`;
  5. let cookie=$.getCookie('sessionId');
  6. // let cookie=encodeURI($.getCookie('sessionId'));
  7. let info=''; //这里是查询条件。
  8. info=`"createYear":"${this.createYear}","createWeek":"${this.createWeek}"`;
  9. //type===3即客户拜访情况时,查看的是月
  10. let type = this.typeListVal
  11. if(type === 3){
  12. info=`"createYear":"${this.createYear}","createMonth":"${this.createMonth}"`;
  13. }
  14. info = encodeURI(info)
  15. url=`${url}?type=${type}&sessionId=${cookie}&searchParams=${info}`;
  16. // window.location.href=url;
  17. // console.log(url)
  18. window.open(url);
  19. },

  

将参数处理一下,就可以正常下载了

补充说明:也可以采用二进制流下载方式处理,可查看前面分享的文章

    还可以直接下面这样,传参方式改一下,所有参数都用&来拼接(需要后台配合)

  1. exportExcel(){
  2. // 导出文件list的内容。
  3. let vm = this;
  4. let goRealTime,returnRealTime;
  5. if(vm.goRealTime){
  6. goRealTime=new Date(vm.goRealTime).getTime();
  7. }else{
  8. goRealTime = '';
  9. }
  10. if(vm.returnRealTime){
  11. returnRealTime=new Date(vm.returnRealTime).getTime();
  12. returnRealTime = returnRealTime + 3600*24*1000;
  13. }else{
  14. returnRealTime = '';
  15. }
  16. let uu=$.getCookie('prefixUrl');
  17. let sessionId=$.getCookie('sessionId');
  18. // info=`"billType":"${this.billType}","startTime":"${stratT}","endTime":"${entT}","billCode":"${this.orderNumber}","departmentName":"${this.departmentName}","ownerName":"${this.applyUserName}"`;
  19. // url=`${url}?type=${type}&sessionId=${cookie}&searchParams=${info}`;
  20. let url=`${uu}/useVehicleApply/exportToExcel?sessionId=${sessionId}&orderNumber=${vm.orderNumber}&departmentName=${vm.departmentName}&applyUserName=${vm.applyUserName}&goRealTime=${goRealTime}&returnRealTime=${returnRealTime}&licensePlate=${vm.licensePlate}&applyStatus=${vm.applyStatus}&useCarType=0` ;
  21. // console.log(url);
  22. window.location.href=url;
  23. },

  

IE浏览器下载后台返回的Excel文件,报错400的更多相关文章

  1. 使用office 365打开excel文件报错,提示“向程序发送命令时出现问题”

    我买了一套正版的office 365装在我的windows10 上.但是每次打开excel都会报错,如图一.求教了微软技术人员,他们给出了以下办法: 图一 方法一: 修复安装Office ====== ...

  2. .net 读取Excel文件报错

    错误内容 Microsoft Office Excel 不能访问文件“D:\WWWRoot\Website\Test\Excels\Test1.xls”. 可能的原因有: 1 文件名称或路径不存在. ...

  3. node模拟后台返回json书写格式报错--Unexpected token ' in JSON at position 1

    最近在学习Node的知识,就尝试写了一个注册登陆的简单功能,但是自己在模拟后台返回值的时候,总是报错Unexpected token ' in JSON at position 1,查找原因之后,是因 ...

  4. SQL Server导入Excel文件报错

    目录 文本被截断,或者一个或多个字符在目标代码页中没有匹配项 原因 解决方法 该值违反了该列的完整性约束 空行 没有设置为允许为NULL 我以前也导入过数据,也没报错,今天再次导入数据的时候,发现了两 ...

  5. wget下载阿里云oss的文件报错403

    问题 在实际工作中,我们为了方便,会将一些脚本储存在云端(阿里云OSS),这样方便我们使用和下载,但是在实际的使用过程中,我们会遇到一些问题. 示例链接:https://djxlsp.oss-cn-s ...

  6. poi解析excel文件报错

    getFileMagic() only operates on streams which support mark(int) 使用 bis 解决 BufferedInputStream bis = ...

  7. nginx访问fastdfs文件 报错400 Bad Request

    1.修改vi /etc/fdfs/mod_fastdfs.conf 2.将url_have_group_name = false 改为 url_have_group_name = true 3.重启 ...

  8. axios+post获取并下载后台返回的二进制流

    axios+post获取并下载后台返回的二进制流 let url = $.getCookie('prefixUrl')+'/expenseword/exportWords'; let vm = thi ...

  9. ajax发送请求下载字节流形式的excel文件

    背景 开发项目中导出功能,因为数据量有点大,所以导出可能需要时间有点长,所以想用ajax异步请求. 存在问题 利用传统的js和jquery提供的ajax相关获取响应的方式是无法实现excel文件下载的 ...

随机推荐

  1. 在Mac 搭建robotframework 环境 遇到ride.py 打不开的方法(没试过,先记录在此)

    折腾来一下午,遇到了好多坑 坑 1.不要用pip 下载wxpython 2.不要用mac自带的python 3.不要自己下载wxpython 步骤: 1. 安装homebrew, /usr/bin/r ...

  2. Django中的文件上传和原生Ajax

    概述 Django中的上传有3种方案: form 表单常规上传,但点击提交后会自动刷新页面 Ajax 上传,不刷新页面,(分为原生ajax上传和jQuery上传),IE7以上不兼容 iframe 上传 ...

  3. Apache三种工作模式详解

    Apache HTTP服务器被设计为一个强大的.灵活的能够在多种平台以及不同环境下工作的服务器.这种模块化的设计就叫做“多进程处理模块”(Multi-Processing Module,MPM),也叫 ...

  4. JQ操作select项

    jQuery获取Select元素,并选择的Text和Value: 1. $("#select_id").change(function(){//code...});   //为Se ...

  5. hana客户端工具

    SAP HANA可视化客户端工具是C/S模式的,远程访问使用,都不是太方便,目前有一款基于WEB的可视化工具TreeSoft,通过浏览器就可以访问使用了,并且可以同时管理.维护.监控SAP HANA等 ...

  6. c# 如何给 dataGridView里添加一个自增长列(列名为序号)

    System.Data.DataTable table = new DataTable();                System.Data.DataColumn column = new Da ...

  7. FlappyBird

    学习CocosCreator有段时间了,现在花了两天时间写了个像素鸟的小游戏,这个游戏之前又看到过,但是不知道怎么又下架了,之前还是蛮火的游戏,想起来后去网上看了看,原来是因为侵犯了 超级玛丽 的游戏 ...

  8. NIO理解

    ByteBuffer Test: package java_guide; import java.nio.ByteBuffer; public class ByteBufferMethods { pu ...

  9. [学习笔记] 在Eclipse中添加用户库 Add User Libraries ,在项目中引用用户库

    如果还没有安装Eclipse, 则请参考前文:  [学习笔记] 下载.安装.启动 Eclipse(OEPE) 添加用户库 本文主要介绍在项目中直接使用第三方库的情况.就是把第三方的jar文件直接放到某 ...

  10. Mongodb: com.mongodb.MongoSocketReadException: Prematurely reached end of stream

    saveLocationInfo errorcom.mongodb.MongoSocketReadException: Prematurely reached end of stream at com ...