wx.navigateTo传参后接收参数不完整
发布于 5 年前 作者 kangxia 13682 次浏览 来自 问答
data: {
  arry:"crmAccountDetail?queryBean=",
},
handleTap: function() {
  wx.navigateTo({
    url: '../search/search?queryBean=' + JSON.stringify(this.data.arry),
  })
},

但是在接收界面onLoad的时候,接收的值是被从?往后截取掉的

经过测试,把?去掉,接收的值也会把=往后截取掉的

onLoad: function(options) {
   console.log("当前的searchObj是:" + options.queryBean);//当前的searchObj是:"crmAccountDetail
   this.data.searchObj = JSON.parse(options.queryBean); //解析得到对象
   this.setData({
     searchObj: JSON.parse(options.queryBean)
   })
 },

百度搜索到的内容:

因为不能上链接,所以就把内容复制过来了。原作者:韦弦zhy

微信小程序导航参数中含有问号

参数含有问号怎么办.jpg

有时从一个页面导航到另一个页面需要携带参数,而正巧的是,参数中含有问号(?),此时,后面的页面在onLoad: function (options)中是拿不到我们想要的数据的

比如:

 wx.navigateTo({
      url: "../about/about?a=3?3"
 })

我们拿到的options中却是:

{a=3}

后面的数据直接丢失了

解决方法有三:

一、将该参数设为全局变量

var app = getApp()app.globalData.paramsName = " "

然后在需要的界面去取

二、存入storage

  wx.setStorageSync("paramName", "paramValue")

然后在需要的界面使用

   wx.getStorage({
      key: 'paramName',
      success: function(res) {
        console.log(res.data)
      },
   })

三、使用escape转码 和 unescape解码

    let data = escape("4?4")
    wx.navigateTo({
      url: "../about/about?a=" + data   })
  onLoad: function (options) {

    console.log(options)
    let a = options.a 
    a = unescape(a)
    console.log(a)
  }

和三一样,还可以使用 encodeURIComponentdecodeURIComponent 这就是小程序中导航的参数含有?的解决方案,如果还有其他好的方法,欢迎留言交流。

2 回复

百度了一番后,终于解决了。

使用 encodeURIComponentdecodeURIComponent转码和解码就好了。

还有人说使用escape转码 和 unescape解码

传参里面带?肯定不行呀,你unicode下

回到顶部