luolanqiang 发表于 2020-9-2 23:08:58

【二维码应用】巧用URL传值实现一次扫码展示设备详情或动态

本帖最后由 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。
解决问题,一扫终决。

zzwange 发表于 2020-9-3 08:43:53

感谢大佬分享!

Simon.hu 发表于 2020-9-3 10:12:21

流弊~

feng2575 发表于 2020-9-4 13:50:26

牛叉 大神

Tom猫 发表于 2020-9-4 16:21:16

这个很有用哦:hjyzw:

sz_xd 发表于 2020-9-6 11:19:08

非常感谢楼主无私分享,谢谢!

mfkpie8 发表于 2020-9-6 18:57:37

SQL Server2016 原生支持JSON按原值存储!用SQL出来是json的格式 的即可

hubei333 发表于 2020-9-6 21:14:09

都是大神!:)

Simon.hu 发表于 2020-9-11 12:26:48

咱这里必须藏龙卧虎啊~

紫色幽魂 发表于 2020-10-18 15:11:04

用到了用到了
页: [1] 2 3
查看完整版本: 【二维码应用】巧用URL传值实现一次扫码展示设备详情或动态