方法一
1.问题
在微信小程序中,有时需要传递字符串
?
或者&
,英文地址栏中的&
和?
符号的会被解析的,但是可以用其他标志性的字符,也是在地址栏中不会用不到的字符代替 比如@
如果直接传递
a页面
var data = {a:'?34ew',b:'&34242'};
var objStr = JSON.stringify(data);
wx.navigateTo({
url: `/pages/info/info?data=${objStr}`
});
b页面
const data = JSON.parse(options.data);
// 执行该步骤会报错
2. 解决办法
我们用在A页面中 需要携带一个json对象去B页面时
a页面
var data = {a:'?34ew',b:'&34242'};
var objStr = JSON.stringify(data);
objStr = objStr.replace(/\?/g, '@@111');
objStr = objStr.replace(/\&/g, '@@222');
wx.navigateTo({
url: `/pages/info/info?data=${objStr}`
});
b页面
let dataStr = options.data.replace(/\@@111/g, '?');
dataStr = dataStr.replace(/\@@222/g, '&');
const data = JSON.parse(dataStr);
方法二
使用路径加密以及解码方法
a页面
var data = {a:'?34ew',b:'&34242'};
var objStr = encodeURIComponent(JSON.stringify(data));
wx.navigateTo({
url: `/pages/info/info?data=${objStr}`
});
b页面
let dataStr = decodeURIComponent(options.data);
const data = JSON.parse(dataStr);
encodeURIComponent()加密、decodeURIComponent()解码将字符串转换为原来的字符串