由于微信小程序URL传参时,如果不转换数据并且参数带有特殊字符,则微信会截取数据,导致数据不完整。

所以,我们可以使用encodeURIComponent,对参数进行转换特殊字符。(注意:encodeURIComponent时,需要把对象数据转string格式)

// 组拼数据
let data = {
    aa: 123,
    bb: 456
}

let newData = JSON.stringify(data);
uni.navigateTo({
    url: `/pages/xxxxxxx?data=${encodeURIComponent(newData)}`
});

跳转页面时,传参示例图

上图可以看到,有些数据的字符被转换了

最后,我们在跳转后的页面,再使用decodeURIComponent,转回正常数据,再使用JSON.parse即可获取完整数据。

let dData = decodeURIComponent(option.data);
let newData = JSON.parse(dData);

console.log(newData)

总结:
先把数据JSON.stringify转string格式,再使用encodeURIComponent对数据特殊字符进行转换。

跳转页面后,使用decodeURIComponent把特殊字符转回来,再使用JSON.parse转成对象格式即可。

Scroll Up