ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

微信小程序扫码进入小程序参数问题

2022-05-12 17:31:44  阅读:230  来源: 互联网

标签:扫码 option url 微信 程序 detail scene id options


需求:扫描二维码进入小程序的详情页面,目录页面,页面请求都需要带上参数及需要验证用户授权。

既然是扫码进入的,那么我第一反应肯定是在请求拦截里做操作了,不然如何判断他是什么怎么进来的。一进入页面,肯定会有请求,我先调用一下wx.getLaunchOptionsSync()获取当前的场景值,看看他是怎么进来的。如果是扫码进来的, 我要记录起当前的url以及query参数。

   // 获取场景URL
    let jumpUrl = ''
    // 获取场景ID
    const option = wx.getLaunchOptionsSync()
    
    // 1011 二维码  1012 长按图片识别  1013 扫描相册二维码
    if(option.scene === 1011 || option.scene === 1012 || option.scene === 1013 || option.scene === 1047 || option.scene === 1048 || option.scene === 1049) {
        if(JSON.stringify(option.query) !== '{}') {

            jumpUrl = encodeURIComponent(`/${option.path}?${decodeURIComponent(option.query.scene)}`)
        }
    }

这里有两个注意的点:

1、option.query.scene 获取的参数需要用decodeURIComponent解码,解码出来的值是跟你自己写的参数会不一样的。
比如:一般你页面传值的url是: '/pages/detail/detail?id=3', 解码出来后的参数是'/pages/detail/detail?id=7627a3dc69a88c7t'这种格式,解码出这个之后,就拿这个去试试能否请求成功。

2、因为页面需要授权,你要把记录的链接带到登录页 '/pages/detail/detail?id=7627a3dc69a88c7t'去授权。如果直接带过去,会出现参数丢失问题,所以需要encodeURIComponent()加密一下

然后就可以带到登录页去了:
wx.reLaunch({ url: '/pages/login/login?redirect=' + jumpUrl, })

接下来就是获取参数的问题。

登录页获取参数,需要解码

onLoad: function (options) {
    // 获取url
    if(options.redirect) {
        const url = decodeURIComponent(options.redirect)
        console.log('url', url)
         // 授权完成后跳转回去
        this.setData({ redirect: url })
    }
}

详情页的参数
因为扫码进来的链接是这样的
'/pages/detail/detail?scene=id=7627a3dc69a88c7t',所以在解码之后,还需要对scene做操作,有scene时,说明是扫码进来的,没有时,说明是页面跳进来的

onLoad(options) {
    let scene = decodeURIComponent(options.scene)
    
    let id = scene !== 'undefined' ? scene.split('=')[1] : options.id
},

完。

标签:扫码,option,url,微信,程序,detail,scene,id,options
来源: https://www.cnblogs.com/Jorec/p/16263380.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有