微信扫描二维码跳转小程序无法获取url参数

706 阅读1分钟

微信扫描二维码跳转小程序无法获取url参数

记录一下碰到的bug,原因还是文档没看仔细,找到的资源较少所以写篇文章。

bug重现:先生成一个带有参数的二维码,配置小程序扫码跳转小程序,在onLoad里获取参数,调试和预览全部正常,上线后发现参数全部获取不到。

bug原因: 小程序为了安全考虑,把所有扫描非小程序二维码的参数全部encode后放在了参数q里,所以我们要重新从q里获取参数并decode

代码:

getQuery(query) {
    return query
      .slice(query.indexOf("?") + 1)
      .split("&")
      .reduce((prev, curr) => {
        let [key, val] = curr.split("=");
        prev[key] = val;
        return prev;
      }, {});
}
onLoad(query) {
    const q = decodeURIComponent(query.q) // 获取到二维码原始链接内容
    const {
            id,
            type
    } = getQuery(q)
    this.id = id || query.id // 为了本地测试
    this.type = type || query.type
}