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图片的展开和收缩实现代码
Apr 16 Javascript
基于编写jQuery的无缝滚动插件
Aug 02 Javascript
js点击列表文字对应该行显示背景颜色的实现代码
Aug 05 Javascript
运用js教你轻松制作html音乐播放器
Apr 17 Javascript
js 博客内容进度插件详解
Feb 19 Javascript
基于Vue2实现的仿手机QQ单页面应用功能(接入聊天机器人 )
Mar 30 Javascript
详解Angular之constructor和ngOnInit差异及适用场景
Jun 22 Javascript
想用好React的你必须要知道的一些事情
Jul 24 Javascript
node通过express搭建自己的服务器
Sep 30 Javascript
Vuex,iView UI面包屑导航使用扩展详解
Nov 04 Javascript
JavaScript设计模式--简单工厂模式定义与应用案例详解
May 23 Javascript
基于vue hash模式微信分享#号的解决
Sep 07 Javascript
取消选中单选框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
全国FM电台频率大全 - 7 吉林省
2020/03/11 无线电
php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
2011/11/07 PHP
thinkPHP使用post方式查询时分页失效的解决方法
2015/12/09 PHP
PHP实现对xml的增删改查操作案例分析
2017/05/19 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
2018/03/15 PHP
表格 隔行换色升级版
2009/11/07 Javascript
JavaScript是否可实现多线程  深入理解JavaScript定时机制
2009/12/22 Javascript
jqGrid jQuery 表格插件测试代码
2011/08/23 Javascript
在ASP.NET中使用JavaScript脚本的方法
2013/11/12 Javascript
关于img的href和src取变量及赋值的方法
2014/04/28 Javascript
JavaScript中对象的不同创建方法
2016/08/12 Javascript
微信小程序 富文本转文本实例详解
2016/10/24 Javascript
bootstrap模态框示例代码分享
2017/05/17 Javascript
js for终止循环 跳出多层循环
2018/10/04 Javascript
vue中uni-app 实现小程序登录注册功能
2019/10/12 Javascript
js实现单元格拖拽效果
2020/02/10 Javascript
Python实现微信公众平台自定义菜单实例
2015/03/20 Python
Python类属性与实例属性用法分析
2015/05/09 Python
详解Python装饰器由浅入深
2016/12/09 Python
查看django版本的方法分享
2018/05/14 Python
Python实现按逗号分隔列表的方法
2018/10/23 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
2019/05/27 Python
python实现视频分帧效果
2019/05/31 Python
Pytorch实现各种2d卷积示例
2019/12/30 Python
python3注册全局热键的实现
2020/03/22 Python
python爬虫实现POST request payload形式的请求
2020/04/30 Python
解决python执行较大excel文件openpyxl慢问题
2020/05/15 Python
Tensorflow tensor 数学运算和逻辑运算方式
2020/06/30 Python
python获得命令行输入的参数的两种方式
2020/11/02 Python
天猫超市:阿里巴巴打造的网上超市
2016/11/02 全球购物
美国最值得信赖的宠物药房:Allivet
2019/03/23 全球购物
美国尼曼百货官网:Neiman Marcus
2019/09/05 全球购物
介绍Java的内部类
2012/10/27 面试题
为数据库创建索引都需要注意些什么
2012/07/17 面试题
大学军训的体会
2014/11/08 职场文书
Mysql数据库值的添加、修改、删除及清空操作实例
2021/06/20 MySQL