收藏
回答

无法正确获得带多个参数的小程序页面二维码的参数

当页面路径的参数是单个的时候,比如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?

怎么解决?






回答关注问题邀请回答
收藏

16 个回答

  • jeremy
    jeremy
    2017-09-26

    #!/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,直接跑吧。

    2017-09-26
    有用
    回复
  • jeremy
    jeremy
    2017-09-26

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

    2017-09-26
    有用
    回复
  • jeremy
    jeremy
    2017-09-26

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

    2017-09-26
    有用
    回复
  • jeremy
    jeremy
    2017-09-26

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

    2017-09-26
    有用
    回复
  • 🍉瓜有冰的
    🍉瓜有冰的
    2017-09-26

    嗯, 看来原因是我们使用的后端代码是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~~

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

    2017-09-26
    有用
    回复
  • 遇见@me.com
    遇见@me.com
    2017-09-26

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

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

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



    2017-09-26
    有用
    回复
  • 🍉瓜有冰的
    🍉瓜有冰的
    2017-09-26

    console.log(options)

    打印出的是

    {store_id: "2\u0026floor_id=1"}


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

    2017-09-26
    有用
    回复
  • 🍉瓜有冰的
    🍉瓜有冰的
    2017-09-26

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

    的二维码:


    2017-09-26
    有用
    回复
  • 2017-09-26

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


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

    https://developers.weixin.qq.com/blogdetail?action=get_post_info&lang=zh_CN&docid=fd0a200620b28bfcdac5107fb34a22f2


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

    https://developers.weixin.qq.com/blogdetail?action=get_post_info&lang=zh_CN&docid=a537436724f7949352a2917761d444c5

    2017-09-26
    有用
    回复
  • 🍉瓜有冰的
    🍉瓜有冰的
    2017-09-26

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

    2017-09-26
    有用
    回复

正在加载...

登录 后发表内容