小程序路由传数组后接收时为什么报错呢?

res.data是后台传的数组 下面这样写接收时报错SyntaxError: Unexpected end of JSON input 这是怎么回事?

if(res.result==1){
          let data = JSON.stringify(res.data)
          wx.navigateTo({
            url: '/pages/list/index?data='+data,
          })
}
onLoad(options) {
    console.log(JSON.parse(options.data))
},
阅读 1.4k
1 个回答

字符串中包含 ?=&# 会对小程序路由识别造成干扰(本质就是一个 URL 地址,你想想你的 URL 里查询参数是不是不能带这几个特殊字符)。需要先转码再传递,接收方先解码再使用。

另外小程序 Path+Query 一共最长 2048,超过了就会被截断。

真有比这还长的场景的话就得用别的方式跨页面传值了,比如通过 storage 中转啊、通过 globalData 中转啊、小程序自带的 EventChannel 啊、第三方 EventBus 啊等等。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题