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转换后,在接收参数的时候自动把?和=省略了