1.在这之前我一直以为,应该说是并没有去思考过,url地址传参的长度限制问题:知道在项目材料价格系统中遇到之后,才对这个问题进行了具体的探索。IE中最大的长度限制为2084个,用于get传递数据的长度是2048个字节。所以在某些传参情况下,使用url地址传参就不可以实现。所以采用了下面的这种解决方案:
后台中接收参数用:
答案是:有
url有长度限制,太长的字符串会传递失败,可使用窗体通信、全局变量,或
encodeURIComponent
等多种方式解决,如下为encodeURIComponent
示例。
…限制有多长?
很长,几百K左右吧。
如何传递超过URL长度限制的参数
1.
encodeURIComponent
<navigator :url="'/pages/test/test?item='+ encodeURIComponent(JSON.stringify(item))"></navigator>
// 在test.vue页面接受参数 onLoad: function (option) { const item = JSON.parse(decodeURIComponent(option.item)); }
注意:用
encodeURIComponent
不能传输含有%
的参数,【报Bug】- DCloud问答2.
eventChannel
3.全局变量
globalData
<script>
export default {
globalData: {
text: 'text'
}
}
</script>
getApp().globalData.text = 'test'
this.$scope.globalData
获取globalData。uni.$emit(eventName,OBJECT)
encodeURIComponent
过就能传输更长的参数了?注意
不能传输含有%
的参数【报Bug】页面跳转uni.navigateTo 通过 encodeURIComponent(JSON.stringify()) 编码内容出现% 子页面解码时出错 - DCloud问答
我们在开发小程序的过程中,有时候会在小程序页面跳转的时候传参,这个参数的长度还特别的长(如下),url就会被截断。
//我需要传递的参数 let videoDetail = "https://xxxxxxxxxx/index.html?imid=2019112116065477552274061212192768#/Index?imid=2019112116065477552274061212192768&apitoken=81df16bb-e68d-4efa-a4ad-07ad9eeb8de6WXorqMct5MXR20vWYiFTk_n2wTu8Qw1212192768" //页面跳转 wx.navigateTo({ url: '/pages/homePage/mall/webView/webView?imUrl=' + videoDetail })
解决办法:需要对参数进行编码(下边是传入的方法)
(接收的方法)
这几天为解决一个BUG头疼了一段时间,BUG现象如下:
一个选择人员的选择控件,当选择多个人时(50多个的时候),返回没有错误现象,而再一次打开的时候就报404错误。
看到这个错误非常纳闷,无法下手,只能再一次看控件的代码,在详细看代码时,发现所有的参数都是经过URL传参的,赶紧百度一下URL参数的大小限制(从这个百度开始,我就进入一个误区:参数大小的限制)。结果发现网上都说URL参数的大小为256字节,再一看自己的数据,的确超过了这么多,既然找到原因就修改,把参数传递方法修改为不通过URL传参。
过了几天,再一次翻出这个BUG,想解决的完善一点,再一次百度,发现第一次的理解完全错误了,一次彻底的查询,总结如下两点,而对应URL参数大小限制为256字节,自己也不能确定是否有这一说话,至少测试没有这个现在。
1. 各个浏览器对URL的长度有现在。
2. IIS 7 对 Query String 有长度限制;默认:2048;
根据网上的资料(推荐一篇博客:http://www.cnblogs.com/henryhappier/archive/2010/10/09/1846554.html)了解到各个浏览器对URL的长度现在如下:
1. IE浏览器对URL的长度现限制为2048字节(自己测试最多为2047字节)。
2. 360极速浏览器对URL的长度限制为2118字节。
3. Firefox(Browser)对URL的长度限制为65536字节。
4. Safari(Browser)对URL的长度限制为80000字节。
5. Opera(Browser)对URL的长度限制为190000字节。
6. Google(chrome)对URL的长度限制为8182字节。
这里,我只测试过IE浏览器和360极速浏览器,其它浏览器来自于网上的资料。另外提醒一下大家,URL中,一个汉字通过不同的编码方式大小也不一样。
转载于:https://www.cnblogs.com/taofx/p/4137782.html