window.location.href中url中数据量太大时的解决方法


Posted in Javascript onDecember 23, 2013

先说一下今天遇到的问题

一个导出excel的处理,在按钮按下后需要传很大一个数据到后台,刚开始的做法如下:

var actionUrlSetData = "****Action!exportDatas.action"+ "?now=" + new Date().getTime();
window.location.href= actionUrl + "&" + data;

上面的data就是一个很长的字符串。

这样在火狐和谷歌浏览器都是没有问题的,但是在ie9(其他ie没试,应该同理)就不能正常导出

导致这个问题的原因是各种浏览器对URL解析的长度限制是不同的,ie就是最小的那个,所以出问题了


Microsoft Internet Explorer (Browser)
IE浏览器对URL的最大限制为2083个字符,如果超过这个数字,提交按钮没有任何反应。

Firefox (Browser)
对于Firefox浏览器URL的长度限制为65,536个字符

Safari (Browser)

URL最大长度限制为 80,000个字符。

Opera (Browser)

URL最大长度限制为190,000个字符。

Google (chrome)

url最大长度限制为8182个字符

这里还要注意的是WEB服务器对URL的长度也有限制!!

因此不能用Get方法了,只能想办法用post传值,从而有了下面的方案,不知妥否,还请高手指点,总之功能是可以实现了

思路是用post把那个长长的字符串传到后台,保存到session中,在post的回调方法中再用window.location.href

代码如下:

$.post(actionUrlSetData,mapList ,function(){
        var actionUrl = path + "/***action!exportDatas.action"+ "?now=" + new Date().getTime();
        window.location.href= actionUrl + "&" + (data);
    });
Javascript 相关文章推荐
jquery 查找新建元素代码
Jul 06 Javascript
javascript权威指南 学习笔记之null和undefined
Sep 25 Javascript
解决用jquery load加载页面到div时,不执行页面js的问题
Feb 22 Javascript
JavaScript利用构造函数和原型的方式模拟C#类的功能
Mar 06 Javascript
escape函数解决js中ajax传递中文出现乱码问题
Oct 30 Javascript
jQuery绑定自定义事件的魔法升级版
Jun 30 Javascript
微信小程序 WXML、WXSS 和JS介绍及详解
Oct 08 Javascript
微信小程序实战之轮播图(3)
Apr 17 Javascript
Vue-Cli中自定义过滤器的实现代码
Aug 12 Javascript
vue-cli+webpack项目 修改项目名称的方法
Feb 28 Javascript
JavaScript设计模式之享元模式实例详解
Jan 17 Javascript
在vue中import()语法不能传入变量的问题及解决
Apr 01 Vue.js
取消选中单选框radio的三种方式示例介绍
Dec 23 #Javascript
如何在指定的地方插入html内容和文本内容
Dec 23 #Javascript
js 阻止子元素响应父元素的onmouseout事件具体实现
Dec 23 #Javascript
在js文件中写el表达式取不到值的原因及解决方法
Dec 23 #Javascript
js 通用订单代码
Dec 23 #Javascript
js 跳出页面的frameset框架示例介绍
Dec 23 #Javascript
html5 canvas js(数字时钟)实例代码
Dec 23 #Javascript
You might like
php编写简单的文章发布程序
2015/06/18 PHP
Smarty使用自定义资源的方法
2015/08/08 PHP
thinkPHP模板中for循环与switch语句用法示例
2016/11/30 PHP
Extjs4 消息框去掉关闭按钮(类似Ext.Msg.alert)
2013/04/02 Javascript
Array 重排序方法和操作方法的简单实例
2014/01/24 Javascript
父页面显示遮罩层弹出半透明状态的dialog
2014/03/04 Javascript
Node.js实现简单聊天服务器
2014/06/20 Javascript
JavaScript每天必学之数组和对象部分
2016/09/17 Javascript
JS声明式函数与赋值式函数实例分析
2016/12/13 Javascript
详解js数组的完全随机排列算法
2016/12/16 Javascript
Angular实现跨域(搜索框的下拉列表)
2017/02/16 Javascript
swiper 自动图片无限轮播实现代码
2018/05/21 Javascript
在Vue项目中取消ESLint代码检测的步骤讲解
2019/01/27 Javascript
ES6 Promise对象的应用实例分析
2019/06/27 Javascript
vue 解决异步数据更新问题
2019/10/29 Javascript
[04:26]DOTA2上海特锦赛小组赛第二日 TOP10精彩集锦
2016/02/27 DOTA
[01:03:37]Secret vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
[43:43]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第三场 11.29
2020/12/02 DOTA
python使用xlrd模块读写Excel文件的方法
2015/05/06 Python
python绘制热力图heatmap
2020/03/23 Python
Python编写打字训练小程序
2019/09/26 Python
PyTorch实现AlexNet示例
2020/01/14 Python
tensorflow 重置/清除计算图的实现
2020/01/19 Python
css3个性化字体_动力节点Java学院整理
2017/07/12 HTML / CSS
纯CSS实现的大小渐变、渐远效果
2014/04/15 HTML / CSS
Shopbop中文官网:美国亚马逊旗下时尚购物网站
2020/12/15 全球购物
解释下面关于J2EE的名词
2013/11/15 面试题
国庆节促销广告语2014
2014/09/19 职场文书
关于工作经历的证明书
2014/10/11 职场文书
解除租房协议书
2014/12/03 职场文书
交警失职检讨书
2015/01/26 职场文书
尼克胡哲观后感
2015/06/08 职场文书
机关单位2016年法制宣传日活动总结
2016/04/01 职场文书
90行Python代码开发个人云盘应用
2021/04/20 Python
Springboot配置suffix指定mvc视图的后缀方法
2021/07/03 Java/Android
MySQL三种方式实现递归查询
2022/04/18 MySQL