关于微信小程序路径参数传递字符串?或者&问题

方法一

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()解码将字符串转换为原来的字符串

你可能感兴趣的:(关于微信小程序路径参数传递字符串?或者&问题)