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 相关文章推荐
网站页面自动跳转实现方法PHP、JSP(上)
Aug 01 Javascript
利用javascript实现禁用网页上所有文本框,下拉菜单,多行文本域
Dec 14 Javascript
js实现刷新iframe的方法汇总
Apr 27 Javascript
jQuery实用密码强度检测
Mar 02 Javascript
JS ES6中setTimeout函数的执行上下文示例
Apr 27 Javascript
JavaScript 获取元素在父节点中的下标(推荐)
Jun 28 Javascript
JS实现手写parseInt的方法示例
Sep 24 Javascript
Vue实现简单分页器
Dec 29 Javascript
小程序实现新用户判断并跳转激活的方法
May 20 Javascript
关于vue路由缓存清除在main.js中的设置
Nov 06 Javascript
原生js实现贪食蛇小游戏的思路详解
Nov 26 Javascript
vue实现书本翻页动画效果实例详解
Apr 08 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 数组的一个悲剧?
2011/05/11 PHP
php递归获取目录内文件(包含子目录)封装类分享
2013/12/25 PHP
PHP实现取得HTTP请求的原文
2014/08/18 PHP
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
2016/11/09 PHP
YII2自动登录Cookie总是失效的解决方法
2017/06/28 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
2017/07/20 PHP
JQuery扩展插件Validate 3通过参数设置错误信息
2011/09/05 Javascript
javascript查询字符串参数的方法
2015/01/28 Javascript
JavaScript实现的伸展收缩型菜单代码
2015/10/14 Javascript
localStorage实现便签小程序
2016/11/28 Javascript
基于JavaScript实现的折半查找算法示例
2017/04/14 Javascript
Vue引用第三方datepicker插件无法监听datepicker输入框的值的解决
2018/01/27 Javascript
vue组件中watch props根据v-if动态判断并挂载DOM的问题
2019/05/12 Javascript
vue中defineProperty和Proxy的区别详解
2020/11/30 Vue.js
基于vue与element实现创建试卷相关功能(实例代码)
2020/12/07 Vue.js
Python显示进度条的方法
2014/09/20 Python
详解Python中for循环的使用方法
2015/05/14 Python
Django中ORM表的创建和增删改查方法示例
2017/11/15 Python
python 切换root 执行命令的方法
2019/01/19 Python
在PyCharm中批量查找及替换的方法
2019/01/20 Python
对python tkinter窗口弹出置顶的方法详解
2019/06/14 Python
Python实现PyPDF2处理PDF文件的方法示例
2019/09/25 Python
python中如何使用insert函数
2020/01/09 Python
python模式 工厂模式原理及实例详解
2020/02/11 Python
Python 给下载文件显示进度条和下载时间的实现
2020/04/02 Python
Python3安装模块报错Microsoft Visual C++ 14.0 is required的解决方法
2020/07/28 Python
Python Pandas list列表数据列拆分成多行的方法实现
2020/12/14 Python
python sleep和wait对比总结
2021/02/03 Python
SmartBuyGlasses中国:唯视良品(销售名牌太阳镜、墨镜和眼镜框)
2017/07/03 全球购物
荷兰街头时尚之家:Funkie House
2019/03/18 全球购物
专业销售业务员求职信
2013/11/18 职场文书
军训自我鉴定100字
2014/02/13 职场文书
大学生职业生涯规划书汇总
2014/03/20 职场文书
党日活动总结
2014/05/07 职场文书
微笑面对生活演讲稿
2014/05/13 职场文书
vue代码分块和懒加载非必要资源文件
2022/04/11 Vue.js