微信小程序:解决页面导航传递url参数时,只传递了一部分的问题

问题描述:

在从文章列表页跳转到文章详情页时,需要把文章的详情url传递过去,url数据格式如下

"url": "http://mp.weixin.qq.com/s?__biz=MzA5NDY0Njk5NA==&mid=100000963&idx=1&sn=81109b2c2336df7800c875ff9cc9d71c&chksm=104a237e273daa68944ad66397c63860af76829f17a1e16c82c118d109314a87a3360da7b548#rd",

初始代码如下

  //通过编程式导航跳转到非tabBar页面
  gotodetail(e) {
    // console.log(e);
    const item = e.currentTarget.dataset['item'];
    // console.log(item);
    const article_url = item.url;
    const jpg_url = item.jpg_url;
    wx.navigateTo({
      url: '/pages/wx_article_detail/wx_article_detail?article_url='+
      article_url+'&jpg_url='+ jpg_url
    })
  },
其中item.url的值就是
http://mp.weixin.qq.com/s?__biz=MzA5NDY0Njk5NA==&mid=100000963&idx=1&sn=81109b2c2336df7800c875ff9cc9d71c&chksm=104a237e273daa68944ad66397c63860af76829f17a1e16c82c118d109314a87a3360da7b548#rd

但是当我给页面导航传参时,发现传递过去的参数不完整,只传递了问号前面一部分 http://mp.weixin.qq.com/s

 

网上冲浪一番后,找到了解决办法

传递参数时使用 encodeURIComponent() 对url参数进行编码,读取参数时,再使用decodeURIComponent()进行解码

列表页的处理方式如下

  //通过编程式导航跳转到非tabBar页面
  gotodetail(e) {
    // console.log(e);
    const item = e.currentTarget.dataset['item'];
    // console.log(item);
    const article_url = item.url;
    const jpg_url = item.jpg_url;
    wx.navigateTo({
      url: '/pages/wx_article_detail/wx_article_detail?article_url='+
      encodeURIComponent(article_url)+'&jpg_url='+encodeURIComponent(jpg_url)
    })
  },

 

详情页接收参数时,处理方式如下

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.setData({
      query: options,  //把navigator传来的参数赋给query
      article_url: decodeURIComponent(options.article_url),
      jpg_url: decodeURIComponent(options.jpg_url)
    })
  },

这样就能把这种带有特殊字符的url参数完整传递过来了

  

posted @ 2022-06-09 17:16  我是冰霜  阅读(561)  评论(0编辑  收藏  举报