URL传参时,参数包含有特殊字符(%、#、&)的处理方法
·
问题描述
uniapp项目中页面跳转时,通过url传参,参数为一个包含特殊的字符的对象并内容比较多,导致不能正常传参
原因分析:
1、有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了。编码的格式为:%+字符的ASCII码,即一个百分号%,后面跟对应字符的ASCII(16进制)码值。例如 空格的编码值是"%20"。
2、url参数有长度限制,参数太长就会显示不全
解决方案:
- 参照上面特殊字符对应的编码,使用replace加正则替换
- 参数为对象时,使用JSON.stringify()转换成字符串,页面接收时再使用JSON.parse()转换成对象
- 参数比较多时且内容复杂使用encodeURIComponent() 转码,decodeURIComponent() 解码,参数需要先JSON.stringify()再转码,页面接受先将参数解码再使用JSON.parse()
let obj = this.list[index] // obj为一个对象内容比较多且包含了特殊字符
1、先替换参数中包含的特殊符号
let formatObj = obj.replace(/\%/g,"%25")
formatObj = obj.replace(/\#/g,"%23")
formatObj = obj.replace(/\&/g,"%26")
formatObj = obj.replace(/\?/g,"%3F")
2、再将参数进行解码再传参
uni.navigate To({
url:'/pages/list/detail?item=' + encodeURIComponent(JSON.stringify(formatObj))
})
// 接收页面
onLoad (option) {
this.info = JSON.parse(decodeURIComponent(option.item))
}
更多推荐
已为社区贡献1条内容
所有评论(0)