项目需求: 前端需要传入过多的参数给后端,get地址栏不行,只能接受post方式去导出数据

1、get的下载方式

通常下载方式如下:
 let url =  xxxx.action?a=xx&b=yy;
window.location.href = url;
// 或者
window.open(url, '_self')

弊端:当请求参数较多时,get的方式无法使用,这时候需要考虑post的方式,但是直接通过ajax的post的方式无法调用浏览器的下载功能

2、post的下载方式

原理: 创建一个隐藏form表单,通过form表单的提交刷新功能,实现下载。代码如下:

    // vue项目代码
// 导出excel
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);
// 动态创建input并给value赋值
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();
} //调用
this.postExcelFile(
{ currentPage: 2, pageSize: 20 },
'url/xxxxxxx/'
);

注意点:传给后端的参数不是json对象的形式,而是 currentPage=2&pageSize=20, 因此需要后端兄弟的配合

更多内容来源本人博客: https://shengchangwei.github.io/vue-post-down/

 
 

最新文章

  1. python内置数据类型-字典和列表的排序 python BIT sort——dict and list
  2. Java排序算法——快速排序
  3. Android OkHttp完全解析 --zz
  4. hdu 2089 不要62--数位dp入门
  5. spring beans源码解读之 ioc容器之始祖--DefaultListableBeanFactory
  6. [AngularJS] Extract predicate methods into filters for ng-if and ng-show
  7. [置顶] android之Notification版本兼容性问题
  8. Web开发中需要了解的东西
  9. slurm任务调度系统部署和测试(一)
  10. 在CYGWIN下编译和运行软件Bundler ,以及PMVS,CMVS的编译与使用
  11. NoClassDefFoundError: org/apache/commons/lang3/StringUtils
  12. 吴恩达深度学习第1课第4周-任意层人工神经网络(Artificial Neural Network,即ANN)(向量化)手写推导过程(我觉得已经很详细了)
  13. ifconfig中lo、eth0、br0、wlan0接口
  14. Servlet中的jsp内置对象
  15. [C#] 一款代码注释清理工具
  16. Django 一对一,一对多,多对多 操作、常用方法
  17. linux 播放加密DVDs
  18. python之基础1
  19. 虚拟化(三):vsphere套件的安装注意及使用
  20. greenplum的用法

热门文章

  1. 【ADO.NET基础】后台获取前台控件
  2. 蓝松SDK - 卡点视频制作介绍
  3. Pots POJ 3414
  4. MySQLdb操作数据库
  5. 6.InfluxDB-InfluxQL基础语法教程--GROUP BY子句
  6. thinkphp5框架之请求
  7. PHP current
  8. [JZOJ5455]【NOIP2017提高A组冲刺11.6】拆网线
  9. webpack4.0入门总结
  10. API设计中防重放攻击