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 相关文章推荐
javascript中的void运算符语法及使用介绍
Mar 10 Javascript
javascript获取form里的表单元素的示例代码
Feb 14 Javascript
基于jquery的文字向上跑动类似跑马灯的效果
Sep 22 Javascript
运用jQuery定时器的原理实现banner图片切换
Oct 22 Javascript
分享一个原生的JavaScript拖动方法
Sep 25 Javascript
深入浅析Vue组件开发
Nov 25 Javascript
原生js实现简单的Ripple按钮实例代码
Mar 24 Javascript
详解vue父子组件间传值(props)
Jun 29 Javascript
vue拖拽组件使用方法详解
Dec 01 Javascript
js+canvas实现纸牌游戏
Mar 16 Javascript
JavaScript 实现继承的几种方式
Feb 19 Javascript
Javascript中async与await的捕捉错误详解
Mar 03 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
第七节--类的静态成员
2006/11/16 PHP
ob_start(),ob_start('ob_gzhandler')使用
2006/12/25 PHP
php通过排列组合实现1到9数字相加都等于20的方法
2015/08/03 PHP
Fleaphp常见函数功能与用法示例
2016/11/15 PHP
JQuery仿小米手机抢购页面倒计时效果
2014/12/16 Javascript
JS判断网页广告是否被浏览器拦截过滤的代码
2015/04/05 Javascript
JavaScript中的slice()方法使用详解
2015/06/06 Javascript
用原生JS对AJAX做简单封装的实例代码
2016/07/13 Javascript
Js 获取、判断浏览器版本信息的简单方法
2016/08/08 Javascript
原生js封装自定义滚动条
2017/03/24 Javascript
Express下采用bcryptjs进行密码加密的方法
2018/02/07 Javascript
vue.js select下拉框绑定和取值方法
2018/03/03 Javascript
JS实现根据数组对象的某一属性排序操作示例
2019/01/14 Javascript
Vue传参一箩筐(页面、组件)
2019/04/04 Javascript
vue多个元素的样式选择器问题
2019/11/29 Javascript
Vue左滑组件slider使用详解
2020/08/21 Javascript
JavaScript大数相加相乘的实现方法实例
2020/10/18 Javascript
vue 避免变量赋值后双向绑定的操作
2020/11/07 Javascript
使用IronPython把Python脚本集成到.NET程序中的教程
2015/03/31 Python
Python使用MYSQLDB实现从数据库中导出XML文件的方法
2015/05/11 Python
pandas string转dataframe的方法
2018/04/11 Python
python实现比较文件内容异同
2018/06/22 Python
influx+grafana自定义python采集数据和一些坑的总结
2018/09/17 Python
对Xpath 获取子标签下所有文本的方法详解
2019/01/02 Python
Python 实现微信防撤回功能
2019/04/29 Python
基于Python实现签到脚本过程解析
2019/10/25 Python
在python里使用await关键字来等另外一个协程的实例
2020/05/04 Python
英国网上超市:Ocado
2020/03/05 全球购物
一套C++笔试题面试题
2012/06/06 面试题
生产部厂长助理职位说明书
2014/03/03 职场文书
乡镇爱国卫生月活动总结
2014/06/25 职场文书
小学领导班子对照材料
2014/08/23 职场文书
长征观后感
2015/06/09 职场文书
观后感开头
2015/06/19 职场文书
钓鱼岛事件感想
2015/08/11 职场文书
《游戏王:大师决斗》新活动上线 若无符合卡组可免费租用
2022/04/13 其他游戏