关于调用getUnlimitedAPI生成无限量带参二维码扫码后不能拿到参数的问题?
发布于 6 年前 作者 wanyan 12028 次浏览 来自 官方Issues
// 云函数入口文件
//openapi.wxacode.createQRCode可以正常拿到传递过来的参数,但是用getUnlimitedAPI这个方法就拿不到参数
const cloud = require('wx-server-sdk')

cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV,
})
 const uploadfile = async function(arraybuffer,path){
   //console.log('我被调用了');
   let {fileID} = await cloud.uploadFile({
     cloudPath:path,
     fileContent:arraybuffer
   })
   return fileID
 }
// 云函数入口函数
exports.main = async (event, context) => {
      try {
        const result = await cloud.openapi.wxacode.createQRCode({
            path'pages/index/index?a=1',
            width430
          })
          console.log(result);
          fileID = await uploadfile(result.buffer, 'my.jpg')
          return fileID
      }
         catch (err) {
    
    return err
  }
     }

下面这种就拿不到要传递的参数

// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV,
})
 const uploadfile = async function(arraybuffer,path){
   console.log('我被调用了');
   let {fileID} = await cloud.uploadFile({
     cloudPath:path,
     fileContent:arraybuffer
   })
   return fileID
 }
// 云函数入口函数
exports.main = async (event, context) => {

  //根据渠道名称进行数据库查询,如果存在(即二次点击),则返回文件艾迪
  
  // console.log(event.namevalue);
    
     //数据库查询不到该渠道,二维码即是第一次输入
     
      try {
        const result = await cloud.openapi.wxacode.getUnlimited({
          scene'a=1'
        })
         // console.log(result);
          fileID = await uploadfile(result.buffer, 'my.jpg')
          return fileID
      }
         catch (err) {
    
    return err
  }
     }

3 回复



上图是通过上面的第一种方法可以拿到参数a = 1

下图是通过上面的第二种方法拿不到参数a=1

参数获取使用options.query.scene 获得的值是a=1,自己拿到这个字符串后处理。

onLoad(options) {
    if (!options.scene) {
      this.setData({
        ak: options.ak || app.globalData.query.ak || '',
      })
    } else {
      var getQueryString = {}
      var strs = decodeURIComponent(options.scene).split('&') //以&分割
      //取得全部并赋值
      for (var i = 0; i < strs.length; i++) {
        getQueryString[strs[i].split('=')[0]] = unescape(strs[i].split('=')[1])
      }
      this.setData({
        ak: getQueryString['ak'] || ''
      })
    }
  }
回到顶部