后台调getWXACodeUnlimit前端怎么获取值,直接用wx.scanCode怎么取值,怎么在模拟器模拟getWXACodeUnlimit传值

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34672907/article/details/89337717

由于之前做的小程序带参数进入都是用芝麻小程序做的二维码,直接传参即可,现在项目老大说要后台调用getWXACodeUnlimit生成二维码前端去取值。然后自己这三个问题搞了好久(当然也有百度),有些压根答不到点上,有些只有前半部分,所以我自己在这里也写一个吧,把整个需要扫码的流程都写完。

不同之处:有sence=这个参数。取值略微不同。

1.先说后台调getWXACodeUnlimit生成二维码,用户从微信进去点击扫一扫

onLoad: function (options) { 
        if (this.getUrlParam("cabinet_id", decodeURIComponent(options.scene))) {//扫码进来带参数
            this.setData({ cabinet_id: this.getUrlParam("cabinet_id", decodeURIComponent(options.scene)) });//将id赋值给data里面的变量
        }  
    },
// 获取扫码后的字符串,因为考虑有多个参数,所以写了一个公共函数
    getUrlParam(name, str) {
        let regs = new RegExp("scene=", "g"); //场景值
        str = str.replace(regs, ""); 
        var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
        var array = str.match(reg);
        if (array != null)
            return array[2];
    },

关键点是得到的参数要先decodeURIComponent

2.进入小程序后点击扫一扫,扫getWXACodeUnlimit生成的二维码

wx.scanCode({
                success:(res)=> {
                    let str = decodeURIComponent(res.path ? res.path.substr(res.path.indexOf("?") + 1, res.path.length - 1) : "");
                    if (this.getUrlParam("cabinet_id", str)) {
                        this.setData({ "cabinet_id": this.getUrlParam("cabinet_id", str) });
                    }else{
                        wx.showModal({
                            title: '提示',
                            content: '没有找到相关设备,请找相关人员确认是否为有效二维码',
                            confirmText: "确定",
                            showCancel: false,
                            success: (res) => {if (res.confirm) {}}
                        })
                    }  
                }
            })

关键点是扫码获取的参数并不是result,参数在path里面,小程序文档估计是没有更新吧,希望你们别掉这坑。path可以用decodeURIComponent转也可以不转,因为手机端自动解码了,但是小程序开发工具还是需要的

3.小程序编辑器模拟getWXACodeUnlimit生成的二维码传参,根据小程序说明文档,说需要encodeURLComponent一下,然后我就傻乎乎的scene=encodeURLComponent(cabinet_id=10001),大家别犯我的错啊,是这样scene=cabinet_id%3D10001

忘了说,要模拟需要点击编译,选择自定义编译条件。如下图:

好了,笔记就做到这,nice!

猜你喜欢

转载自blog.csdn.net/qq_34672907/article/details/89337717
今日推荐