标签: 二维码
页面重定向
vue
移动端
混合开发
总结
- 本质:手机app扫码本质是访问二维码携带对应链接。
- 部分app对相关二维码可以定制一定的规范,比如用丰*App扫定制二维码,会打开对应微服务(H5)指定页面
- url中的参数携带特殊符号需要encode加密处理。
踩过的坑
-
获取参数问题:微信扫码打开对应微服务时,以截取路径是否携带相关参数判断此时打开微服务方式(正常打开还是扫码打开)。基于vue,在
mounted
时调用方法,通过this.$route.query.params
获取路由对应参数作为判断标准,结果跟预测的不一样,如果原来路由params为空,那么不管扫码还是正常打开,通过this.$route.query.params
依旧为空。- 解决办法:调用
window.location
获取url信息,再根据window.location.search //(返回url查询部分)
获取参数。 - 原因:混淆vue前端路由所带参数与二维码url路径携带参数的概念。二维码携带url信息规则如
xxx:meal.index.html#/home/80003040?params=...//params为二维码携带参数信息,80003040为vue路由携带参数信息
。而一般vue中路由之间跳转携带参数一般是通过编程式导航this.$router.push({path:'home',query:{workId:xxx }})//vue中路由为/home?workId=xxx而扫码后url为xxx:meal.index.html/home(待验证)
。
- 解决办法:调用
-
参数带
@ * / : 等特殊符号
问题:url参数带特殊符号会使得参数丢失或者获取参数失败。比如参数本身设计为一个重定向跳转地址,类似http://mc.meal.com/sf/xxx
- 解决办法:
encodeURIComponent(url)
对参数进行加密,转换特殊字符,获取参数解码调用decodeURIComponent(url)
解码。 - 原因:首次遇到此类问题。
- 解决办法:
-
页面重定向问题:获取Url参数,解码参数Url后,前端进行页面重定向,问题:开始用ajax形式即
vue中this.$axios.get/post(...)
直接访问重定向url并且传递参数,重定向失败。- 解决办法:直接在解码后的url拼接参数调用
window.location.href=url
方法跳转。 - 原因:重定向请求返回的不是json格式数据而是返回整个html页面即重定向展示的页面。
- 解决办法:直接在解码后的url拼接参数调用
-
备注:个人记录,如内容有误的地方,欢迎批评指正