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) }
四
和三一样,还可以使用 encodeURIComponent 和 decodeURIComponent
这就是小程序中导航的参数含有?的解决方案,如果还有其他好的方法,欢迎留言交流。

百度了一番后,终于解决了。
使用
encodeURIComponent和decodeURIComponent转码和解码就好了。还有人说使用escape转码 和 unescape解码
传参里面带?肯定不行呀,你unicode下
还是不行,在把?和=用unicode转换后,在接收参数的时候自动把?和=省略了