无法正确获得带多个参数的小程序页面二维码的参数
发布于 6 年前 作者 juanhe 11582 次浏览 来自 问答

当页面路径的参数是单个的时候,比如pages/store?store_id=1通过onLoad(options)中的options可以获取store_id。

但是当页面路径的参数是多个,比如pages/floors?store_id=1&floor_id=8:

当页面是pages/store?store_id=1, 扫描二维码获取单个参数store_id没有问题。

但是当页面是__pages/floor?store_id=1&floor_id=8,无法正确获得store_id和floor_id__

根据该页面路径生成页面二维码,用微信扫描二维码,在onLoad(options)方法中,通过console.log(options)打印出来是这个样子:

{stored_id:“1\u0026floor_id=8”}

但很久之前的行为是正确的,也就是说打印出来是{store_id: “1”, floor_id: “8”}
看起来似乎__&被转义成了\u0026__

而通过体验版生成的二维码,打印出来是

{stored_id:“1”, amp;floor_id=8"},

也就是说__&被转义成了“amp;__”

在开发者工具中,因为是直接设置启动页面和启动参数,在扫面预览生成的的二维码,打印出来是完全正确的

{stored_id:“1”, floor_id=8"}

请问这个是微信后端生成二维码的bug还是微信客户端扫描后解析options的bug?

怎么解决?

10 回复

这个二维码的数据有问题,生成的参数里面就已经是"pages/treasure-hunting/index.html?store_id=2\u0026floor_id=1"了,建议查一下生成二维码接口的调用代码。

麻烦贴一下二维码,我们看看

嗯, 看来原因是我们使用的后端代码是ruby,ruby在to_json时候会将里面的特殊字符转义,比如将& 转义成了\u0026

path = “pages/index/index?store_id=1&floor_id=8”

{“path”=> path}.to_json.

这么看来的确是我们代码的问题。

我们是否有工具可以看到二维码的内容?这样可以方便程序员去调试与测试。

用iPhone扫出来的是mp.weixin.qq.com/a/wiw85HOIhtk~KcpCkmQB66T9Y91RXgofEg

这个东西对于程序员读没有任何价值

console.log(options)

打印出的是

{store_id: “2\u0026floor_id=1”}

因为这个页面二维码是微信的专有二维码,用其他工具扫描也看不到里面的信息

生成附带参数的小程序码,这个功能我调试了好几个发布版本才调试通(仅仅传递了一个参数),体验版不能调试,使得开发过程变得非常考验人的耐心。

onLoad()和onShow()的表现,在开发者工具和真机又有差别

为了别人踩坑后快点出来,我是怎么处理的。。。

这个问题我以前两次发帖提问都没有解决

扫码入口&转为&小程序识别不了 

https://image.wxopen.club/content_7332e73a-3553-11ea-b236-a0999b08aadb.png

带多参数二唯码小程序接收&符号问题 

https://image.wxopen.club/content_734398dc-3553-11ea-b236-a0999b08aadb.png

#!/usr/bin/env python

#  -*- coding:utf-8 -*-

# File http_post.py

import urllib;

import urllib2;

import json;

import sys;

import os;

img_url = “http://api.weixin.qq.com/wxa/getwxacode?access_token=xxx

img_data = {“path”:“pages/index/index?store_id=1&floor_id=8”}

img_jdata = json.dumps( img_data )

img_req = urllib2.Request( img_url, img_jdata )

response = urllib2.urlopen( img_req )

f=open("./testqrcode.jpg",“wb”)

f.write(response.read())

这是测试的python 代码,更换一下AccessToken,直接跑吧。

这是 页面  pages/treasure-hunting/index?store_id=2&floor_id=1

的二维码:

必现吗?刚测试了多个参数的情况,没有出现问题。贴一下有问题的二维码看看

嗯嗯,store_id=1&floor_id=8 =>param_ids=1_8相当于自己做解析了。B类接口会生成小程序码,考虑到使用场景,小程序码的认知度不如普通的二维码,所以我们选择了接口C

回到顶部