博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
突破 URL 传值限制
阅读量:6593 次
发布时间:2019-06-24

本文共 1282 字,大约阅读时间需要 4 分钟。

问题

window.location = url 方法 当传值url 太长时,服务器无法正常接收。

比如下面,当 rowsData 数据量过大时,服务器请求失败。

window.location='rest/files/excel/easyui-datagird?fileName=' + fileName + '&columns='+columns2+'&rowsData='+rowsData;

原因

使用浏览器发送 GET 请求会受浏览器 URL 长度的限制。而 window.location.href 就是 GET 请求。

下面数据是从网上找的,不一定准确,但也能了解个大概:

  • IE 浏览器对 URL 的最大限制为2083个字符
  • Firefox 浏览器 URL 的长度限制为65,536个字符
  • Safari URL 最大长度限制为 80,000个字符
  • Opera URL 最大长度限制为190,000个字符
  • Chrome URL 最大长度限制为8182个字符

解决办法

将URL地址缩减到浏览器和服务器都可接收的或者换成 POST 请求。

POST理论上是不限制传输数据的。

下面例子就是用一个隐藏的 Form 表单来传参进行文件的下载:

var exportUrl = 'rest/files/excel/easyui-datagird' var form=$("
");//定义一个form表单form.attr("style","display:none");form.attr("target","");form.attr("method","post");form.attr("action",exportUrl);var input1=$("
");input1.attr("type","hidden");input1.attr("name","fileName");input1.attr("value",fileName);var input2=$("
");input2.attr("type","hidden");input2.attr("name","columns");input2.attr("value",JSON.stringify(columns));var input3=$("
");input3.attr("type","hidden");input3.attr("name","rowsData");input3.attr("value",JSON.stringify(rows));$("body").append(form);//将表单放置在页面中form.append(input1);form.append(input2);form.append(input3);form.submit().remove();;//表单提交并

其中,input 就是用来传递参数的。input 的 name 属性是参数的名称, value 属性是参数的值。

参考:

转载地址:http://yajio.baihongyu.com/

你可能感兴趣的文章
PL/SQL developer 开发小技能 and ash show command PL/SQL EXECUTE
查看>>
Linux oraenv Tips
查看>>
27-列表解析
查看>>
Java并发--线程安全策略
查看>>
python书籍分类和评语(不断更新)
查看>>
iOS 7用户界面过渡指南
查看>>
ansible变量定义
查看>>
smack 监听不同packet机制
查看>>
用例图
查看>>
“#51CTO学院四周年#互相交流,共同提高!
查看>>
同样是做内容创业,你为什么没有别人赚得多?
查看>>
检查Linux系统日志error和mysql错误日志的脚本
查看>>
高效制冷与自然冷却并重
查看>>
SQL Server 2008 全文搜索的一些知识
查看>>
GUN as 使用
查看>>
一周最新示例代码回顾 (4/16–4/22)
查看>>
TCPDUMP快速入门手册
查看>>
【转】Ubuntu13.04配置:Vim+Syntastic+Vundle+YouCompleteMe
查看>>
Nginx学习之二-配置项解析及编程实现
查看>>
点击edittext并显示其内容
查看>>