微信小程序获取扫描二维码后携带的参数

1、decodeURIComponent解析生成二维码的链接。

 /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {
    if (options.scene) {
     //获取二维码的携带的链接信息
      let qrUrl = decodeURIComponent(options.scene)
      console.log(qrUrl)
      this.setData({
      	//获取链接中的参数信息
        actId: utils.getQueryString(qrUrl, 'actId'),
        shareUserId: utils.getQueryString(qrUrl, 'shareUserId'),
      })
    } 
  },

2、utils中获取链接中所携带的参数

// 解析链接中的参数
let getQueryString = function (url, name) {
  console.log("url = " + url)
  console.log("name = " + name)
  var reg = new RegExp('(^|&|/?)' + name + '=([^&|/?]*)(&|/?|$)', 'i')
  var r = url.substr(1).match(reg)
  if (r != null) {
    console.log("r = " + r)
    console.log("r[2] = " + r[2])
    return r[2]
  }
  return null;
}

//导出方法,外部调用
module.exports = {
  getQueryString: getQueryString,
}

避坑:

onLoad (option) {
  console.log(option)
}

这时可以接收到 拿着参数去请求数据等等操作~

假如你的小程序要发布了

这时候应该改变获取参数的方式,因为正式发布后的获取的参数和在开发者工具中是不一样的,这个坑!!!。下面代码是你获取正式发布小程序后的入口二维码中参数的代码,scene是微信生成二维码方法的一个参数,用来写你要在二维码中携带的参数

onLoad (option) {
  console.log(option)
  if (option.scene) {
    let obj = decodeURIComponent(option.scene)
    ... // 这里就是你拿着参数obj进行操作
  }
}

decodeURIComponent详解

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐