1、页面跳转传递参数过长
如果需要传递的参数content过长,传递的时候会有问题
所以使用encodeURIComponent来传递,使用decodeURIComponent来接收
toInfo(item) {
console.log(item)
let str=encodeURIComponent(JSON.stringify(item))
let str1=str.replace(/%/g, '%25')
//因为百分号在接收时会报错,所以转换成16进制%25,
//如果用下面哪种方法接收处理这一步可以不写
console.log(encodeURIComponent(JSON.stringify(item)))
this.$u.route({
url: 'pages/xiangqing',
params: {
info: str1,
}
})
},
在接收参数的时候如果传递的参数中有%,?,#,&,-,传递时会报错
所以要将危险的值替换掉
onLoad(option) {
option.info = this.encodeSearchKey(option.info)
this.info = JSON.parse(decodeURIComponent(option.info));
},
methods: {
encodeSearchKey(key) {
const encodeArr = [{
code: '%',
encode: '%25'
}, {
code: '?',
encode: '%3F'
}, {
code: '#',
encode: '%23'
}, {
code: '&',
encode: '%26'
}, {
code: '=',
encode: '%3D'
}];
return key.replace(/[%?#&=]/g, ($, index, str) => {
for (const k of encodeArr) {
if (k.code === $) {
return k.encode;
}
}
});
},
}
接收的时候先decodeURIComponent解码再解析JSON字符串