window.location.href中url中数据量太大时的解决方法
这篇文章主要为大家介绍下window.location.href中url中数据量太大时的解决方法,需要的朋友可以参考下
先说一下今天遇到的问题
一个导出excel的处理,在按钮按下后需要传很大一个数据到后台,刚开始的做法如下:
var actionUrlSetData = "https://www.it610.com/article/****Action!exportDatas.action"+ "?now=" + new Date().getTime();
window.location.href= https://www.it610.com/article/actionUrl +"&" + data;
【window.location.href中url中数据量太大时的解决方法】上面的data就是一个很长的字符串。
这样在火狐和谷歌浏览器都是没有问题的,但是在ie9(其他ie没试,应该同理)就不能正常导出
导致这个问题的原因是各种浏览器对URL解析的长度限制是不同的,ie就是最小的那个,所以出问题了
这里还要注意的是WEB服务器对URL的长度也有限制!!
- 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个字符
因此不能用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= https://www.it610.com/article/actionUrl +"&" + (data);
});
推荐阅读
- 热闹中的孤独
- Shell-Bash变量与运算符
- JS中的各种宽高度定义及其应用
- 2021-02-17|2021-02-17 小儿按摩膻中穴-舒缓咳嗽
- 深入理解Go之generate
- 异地恋中,逐渐适应一个人到底意味着什么()
- 我眼中的佛系经纪人
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- “成长”读书社群招募
- 2020-04-07vue中Axios的封装和API接口的管理