微信官方文档
扫普通链接二维码打开小程序
一开始看完官方文档后,以为是设置了规则是https://xxx.xxx.xxx/yyy?code=123之后,我可以自己传不一样的动态参数进去,比如https://xxx.xxx.xxx/yyy?code=my_secret,但是发现,只要code不是123,他就无法跳转了,真是x了dog了。。。
后来我顿悟了,我将二维码规则设置为https://xxx.xxx.xxx/yyy?action=gogogo,然后,测试链接填https://xxx.xxx.xxx/yyy?action=gogogo&code=my_secret,然后。。。二维码生成链接https://xxx.xxx.xxx/yyy?action=gogogo&code=my_secret,扫码后,oh,yeah,顺利拿到整个url,哈哈,原来我们都理解错了。
这里说明一下,action这个可以随便填,你可以用其他任何名字,只是记得自己的自定义链接的前面部分一定要和规则一模一样,比如这里的action=gogogo,至于&符号后面传什么参数就是你的自由了。
小程序代码里面获取参数:
util.js
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,
}
app.js
var utils = require('./utils/util')
App({
onLaunch: function (options) {
console.log("全局onLaunch options==" + JSON.stringify(options))
let q = decodeURIComponent(options.query.q)
if (q){
console.log("全局onLaunch onload url=" + q)
console.log("全局onLaunch onload 参数 flag=" + utils.getQueryString(q, 'flag'))
}
}
})
页面中获取二维码参数
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
console.log("index 生命周期 onload"+JSON.stringify(options))
//在此函数中获取扫描普通链接二维码参数
let q = decodeURIComponent(options.q)
if(q){
console.log("index 生命周期 onload url=" + q)
console.log("index 生命周期 onload 参数 flag=" + utils.getQueryString(q, 'flag'))
}
}
})