【BUG】微信小程序扫码获取不到scene参数的bug修复

这篇具有很好参考价值的文章主要介绍了【BUG】微信小程序扫码获取不到scene参数的bug修复。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

获取小程序二维码scene,bug,微信小程序,notepad++

问题描述:

扫码后获取不到scene,必须点击“重新进入小程序”才可以

错误原因:

微信小程序的二维码扫描分为两种情况:

冷启动:当用户首次扫描二维码或在后台无该小程序运行实例时打开小程序,此时可以通过scene参数获取到二维码中的数据。

热启动:当小程序已经在后台运行,用户通过扫描二维码再次进入小程序时,通常不会触发onLoad方法,而是触发onShow方法。在这种情况下,scene参数通常无法获取,因为它仅在首次加载时被解析。

解决:

所以,获取scene应该写在onshow方法里面
原来写在onload中:
获取小程序二维码scene,bug,微信小程序,notepad++
后面把二维码的判断逻辑在onshow里也加上
但是!普通页面的onshow里面没有options参数,获取不到scene
只有app.js里面的onshow可以获取到scene

所以就在app.js里面获取,然后作为全局变量,再在message.js里面的onshow方法调用文章来源地址https://www.toymoban.com/news/detail-858590.html

app.js:

    onShow: function (options) {
        console.log("APP的onshow被执行");
        console.log("options",options);
        const scene = decodeURIComponent(options.query.scene)
        // 小程序从后台进入前台时执行
        if (options.scene) {
            this.globalData.scene = scene;
        }
    },

message.js:

    onShow() {
        console.log("message页的onshow被启动!");
        this.getAnswer()

        // console.log(typeof app.globalData.scene);
        const scene = app.globalData.scene
        console.log("onshow里面的scene:", scene);
        console.log(typeof scene);
        if (scene != 'undefined') {
            console.log("new:扫码进的");
            //说明该用户是扫码进的
            console.log("scene", scene);
            this.setData({
                qid: scene
            })
            wx.cloud.callFunction({
                name: "login",
                success: async res => {
                    console.log("登录完成");
                    const openid = res.result.openid;
                    app.globalData.userOPENID = openid;
                    this.setData({
                        openid: openid
                    })
                    //检查数据库里面有没有
                    const userData = await db.collection("Users").where({
                        _openid: openid
                    }).get()
                    // console.log(userData.data[0]);
                    if (userData.data.length === 0) {
                        //如果为空,先允许你预览,如果想要添加回答的话,则跳到注册页
                        this.setData({
                            shouldRegist: true
                        })
                        console.log("扫码来的,这个人需要注册");
                    }
                    // 获取问题内容的Promise
                    const getQuestionContent = () => {
                        return new Promise((resolve, reject) => {
                            db.collection("Questions")
                                .where({
                                    _id: this.data.qid
                                })
                                .get()
                                .then((res) => {
                                    this.setData({
                                        qtitle: res.data[0].Title,
                                        creatorid: res.data[0].creatorID
                                    });
                                    resolve();
                                })
                                .catch(reject);
                        });
                    };

                    // 获取问题作者头像的Promise
                    const getAuthorAvatar = () => {
                        return new Promise((resolve, reject) => {
                            db.collection("Users")
                                .where({
                                    _openid: this.data.creatorid
                                })
                                .get()
                                .then((res) => {
                                    this.setData({
                                        avatar: res.data[0].avatar,
                                        createrName: res.data[0].nickname
                                    });
                                    resolve();
                                })
                                .catch(reject);
                        });
                    };

                    // 使用Promise的链式调用确保按顺序获取数据
                    getQuestionContent()
                        .then(getAuthorAvatar)
                        .then(res => {
                            this.getAnswer();
                            this.checkIfMyQuestion();
                            wx.hideLoading()
                        })
                        .catch((error) => {
                            console.error("An error occurred: ", error);
                        });
                }
            })
        }
    },

到了这里,关于【BUG】微信小程序扫码获取不到scene参数的bug修复的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 修复微信小程序获取头像的bug,微信小程序新版头像API使用

    接着我之前发布的一篇文章:微信小程序上传头像的临时路径,持久化保存到服务器与数据库(nodejs后台开发)_盒子猫君的博客-CSDN博客 今天我就来解决掉之前的问题吧! 从之前的后台报错来看,获取到的tempFilePath值和avatarUrl的值相同,都是http://tmp,不过头像都已经上传成

    2024年02月07日
    浏览(29)
  • 修复微信小程序不能获取头像和昵称的bug,微信小程序新版头像昵称API使用

    大厂程序员都是有KPI绩效考核的,所以他们不能闲着,每天要想着怎么优化程序代码、怎么满足奇葩用户的需求,所以苦逼了我们这些小公司程序员,微信一个小小的API接口改动,可能就让一个小公司因此损失惨重,甚至直接面临倒闭。鹅厂可不管你这些小公司的死活,毕竟

    2024年02月11日
    浏览(47)
  • Java后台实现网站微信扫码登录功能,获取用户openid,及微信用户信息(小程序码方案),关联微信小程序(个人主体小程序也可以)

    目录 前言 下面展示操作流程 注册微信小程序 通过后台获取小程序码 前端处理 时序图理解 方案实现步骤 前言 很多业务场景之下我们需要实现  微信扫码登录  的需求,如: 同步网站与小程序的用户数据 。 需要获取用户微信相关基本信息,如头像、id等 实例:小程序上的

    2024年02月02日
    浏览(44)
  • 微信小程序bindinput输入值的值获取不到

    在textarea标签中 我们用bindinput事件来获取textarea中输入的值,获取不到,且总是提示中国标准时间的黄色警告(warning) 解决这个问题的主要就是在你的value=\\\"{{MarkMessage}}\\\"前面加一个  model: 这样就可以解决  一定要在value前面加model:  

    2024年02月13日
    浏览(25)
  • 微信小程序怎样获取参数!!!

    在小程序中,页面之间传递参数有多种方式。以下是常用的几种传参方式: URL 参数: 在小程序中,页面之间可以通过URL参数传递数据。你可以在目标页面的URL中携带参数,然后在目标页面的 onLoad 生命周期函数中获取这些参数。 在源页面中跳转到目标页面:        在目标

    2024年04月10日
    浏览(28)
  • 获取微信小程序路由参数

    获取微信小程序的方法如下 具体使用

    2024年02月15日
    浏览(25)
  • 微信小程序之间的参数传递、获取

    一、获取当前页面参数 js 当前页面参数可以在小程序开发工具的右下角查看 二、单独input文本框参数的获取 wxml:这里的bindconfirm指的是回车事件,也可以使用别的事件  js 输出结果:在文本框输入:这是一个测试,回车,得到的结果如下 三、表单获取参数信息(包括多选,

    2024年02月09日
    浏览(36)
  • 微信小程序data-item设置获取不到数据的问题

    简单说明: 在微信小程序中,通过列表渲染使用wx:for根据数组中的每一项重复渲染组件。同时使用bindtap给每一项绑定点击事件clickItem,再通过data-item绑定数据。 **问题:**通过data-item绑定的数据,在点击事件中获取不到。 问题示例: 在js文件中,通过clickItem函数的event对象获

    2024年02月12日
    浏览(29)
  • 微信小程序授权登录wx.getUserProfile获取不到昵称及头像解决方案

    半年前做的个小程序,更新了二个文字,重新上传审核通过,悲剧了,新用户的昵称全部变为微信用户,头像全部变为默认头像,查了半天代码没找到原因,相当头大,搜了一下文档,尴尬了,11月9号新更新的规则,不再返回昵称和头像值....需要用头像昵称获取能力去触发获

    2024年02月11日
    浏览(31)
  • 微信小程序:生成二维码带参数并获取值

    通过后台接口可以获取小程序任意页面的小程序码,需要注意的是 接口只能生成已发布的小程序的二维码 小程序接口文档 1)scene 字段的值会作为 query 参数传递给小程序/小游戏。用户扫描该码进入小程序/小游戏后,开发者可以获取到二维码中的 scene 值,再做处理逻辑。

    2024年02月15日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包