微信小程序 - 带参数跳转页面参数字段文章内容太长或包含特殊字符(“?“,“&“ 或 “=“
发表时间:2020-10-19
发布人:葵宇科技
浏览次数:49
前言
在微信小程序,使用 wx.navigateTo({})
API 携带参数跳转页面很常见,但是今天有一个需求,需要携带一个复杂的数据,它是一个数组,里面嵌套了 N 个对象,对象里还有数组。 所以我需要使用 JSON.stringify
将对象转为字符串,然后再传递过去。
我的场景:其中
image
属性中包含文章链接,导致了JSON.parse
解码失败,因为被截取了。
解决方案
用 encodeURIComponent()
进行转码,在目标页面再用 decodeURIComponent()
解码。
/*
* [发送参数]
* 1. 将对象解析为字符串
* 2. 把字符串作为 URI 组件进行编码
*/
wx.navigateTo({
url: '/pages/index?data=' + encodeURIComponent(JSON.stringify(object)),
})
/*
* [接收参数]
* 1. 将字符串解析为对象
* 2. 把字符串作为 URI 组件进行解码
*/
this.setData({
data: JSON.parse(decodeURIComponent(options.data))
})