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 相关文章推荐
点击文章内容处弹出页面代码
Oct 01 Javascript
jquery select选中的一个小问题
Oct 11 Javascript
JQuery团队打造的javascript单元测试工具QUnit介绍
Feb 26 Javascript
Jquery 的扩展方法总结
Oct 01 Javascript
远离JS灾难css灾难之 js私有函数和css选择器作为容器
Dec 11 Javascript
jquery滚动条插件jScrollPane的使用介绍
Nov 08 Javascript
JavaScript中的cacheStorage使用详解
Jul 29 Javascript
详解vue中引入stylus及报错解决方法
Sep 22 Javascript
详解vue+axios给开发环境和生产环境配置不同的接口地址
Aug 16 Javascript
VueCli4项目配置反向代理proxy的方法步骤
May 17 Javascript
vue+echarts实现动态折线图的方法与注意
Sep 01 Javascript
详解Vue的mixin策略
Nov 19 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
The specified CGI application misbehaved by not returning a complete set of HTTP headers
2011/03/31 PHP
基于php设计模式中工厂模式详细介绍
2013/05/15 PHP
Jquery中增加参数与Json转换代码
2009/11/20 Javascript
JQuery实现用户名无刷新验证的小例子
2013/03/22 Javascript
js带按钮的提示框可供选择示例代码
2013/09/17 Javascript
setInterval()和setTimeout()的用法和区别示例介绍
2013/11/17 Javascript
[原创]推荐10款最热门jQuery UI框架
2014/08/19 Javascript
超棒的响应式布局jQuery插件Freetile.js
2014/11/17 Javascript
jquery实现实时改变网页字体大小、字体背景色和颜色的方法
2015/08/05 Javascript
JavaScript中浅讲ajax图文详解
2016/11/11 Javascript
div实现自适应高度的textarea实现angular双向绑定
2017/01/08 Javascript
基于Jquery Ajax type的4种类型(详解)
2017/08/02 jQuery
使用JavaScript实现点击循环切换图片效果
2017/09/03 Javascript
vue中axios处理http发送请求的示例(Post和get)
2017/10/13 Javascript
小程序开发基础之view视图容器
2018/08/21 Javascript
js如何获取访问IP、地区、当前操作浏览器
2019/07/23 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
2020/07/22 Javascript
[02:57]DOTA2亚洲邀请赛 SECRET战队出场宣传片
2015/02/07 DOTA
python实现SMTP邮件发送功能
2020/06/16 Python
Python random模块用法解析及简单示例
2017/12/18 Python
Django项目实战之用户头像上传与访问的示例
2018/04/21 Python
Python3多进程 multiprocessing 模块实例详解
2018/06/11 Python
使用 Python 实现微信群友统计器的思路详解
2018/09/26 Python
python如何爬取网站数据并进行数据可视化
2019/07/08 Python
用Python在Excel里画出蒙娜丽莎的方法示例
2020/04/28 Python
Python 读取位于包中的数据文件
2020/08/07 Python
python输入中文的实例方法
2020/09/14 Python
用ldap作为django后端用户登录验证的实现
2020/12/07 Python
澳大利亚网上玩具商店:Mr Toys Toyworld
2018/03/25 全球购物
什么是设计模式
2012/06/17 面试题
市场营销专科应届生求职信
2013/11/24 职场文书
大四毕业生自荐书
2014/07/05 职场文书
解除劳动关系协议书范文
2014/09/11 职场文书
漂亮妈妈观后感
2015/06/08 职场文书
解决Golang中ResponseWriter的一个坑
2021/04/27 Golang
详解在OpenCV中如何使用图像像素
2022/03/03 Python