本帖最后由 luolanqiang 于 2020-9-4 10:25 编辑
有这么一个场景:用二维码张贴设备标签,用手机扫码读取设备信息,听起来似乎很简单,但一做就杯具了~~
1、必须支持匿名访问;
2、不限客户端访问,例如微信、QQ、百度客户端......凡是你能想到的(其实大多数人习惯用微信扫一扫)
那么问题就来了:
光识别一个死的信息很多时候没有价值,而且不美观,我们要做的是获取设备的动态信息,这些信息当然是在数据库中提取,甚至在页面上用超链接去查询更多的相关信息,那么首先要连接到我们设计好的设备信息页面,然后用设备ID去查询相关信息。那么二维码肯定是一个URL地址,指向设备信息页面,但是设备ID如何传入就成了问题,这时候有两个方案:
1、通过手机扫码进入页面,然后手工输入设备ID查询;
2、通过手机扫码进入页面,然后从页面再次调用手机扫码扫入设备ID查询(相当于是两个二维码),这个方式本身就比较繁琐,而且,调用手机扫码,目前论坛提供的方法有企业微信调用、微信公众号调用、钉钉调用、活字格APP调用,可问题是,我们没有办法限制别人使用什么客户端,蛋大了吧?我们的应用场景是生产出的产品张贴二维码,领导检查的时候,可以扫描获取这个产品的相关信息(比如桥梁上的预制梁),那最好是不管用什么客户端,能扫的都行。
以上两个方法都不是最佳的,折腾了半天,解决了这个问题,只需要扫一次。
1、使用“#”拼接URL和设备ID,例如HTTP//XXXX.COM#123456,生成二维码(XXXX.COM代表设备信息查询页面地址,123456为设备ID);“#”之后的内容对URL没有影响,它是多余的,实际上浏览器的请求还是XXXX.COM,还是跳转到查询页面;
2、在页面上利用JS代码获取当前URL(包含有设备ID),赋值给一个单元格,假定这个单元格命名为"abc",页面加载命令加载如下代码:
var test = window.location.href
Forguncy.Page.getCell('abc').setValue(test)
3、这时候名称为abc的单元格将得到这个拼接的URL,利用一个函数去获取这个ID,假设这个ID是固定位数的那么直接用RIGHT函数好了,如果不是的话,先find("#",abc)可以得到#所在的位置,然后len(ABC)得到整个URL的长度,RIGHT(abc,len(ABC)-find("#",abc))即可得到设备ID。
4、加载设备列表到页面,查询条件为上边得到的这个ID。
解决问题,一扫终决。
|