微信小程序:页面跳转传参问题

news/2024/7/20 2:47:45 标签: 微信小程序, 小程序

        今天后端大兄弟突然拿着一个反编译过来的小程序源码,问能不能改。我心里直道好家伙,WebGIS开发的岗位,前端的活儿真是一个不少。大致看了看有几处是调整页面和接口修改的,源码部分和Vue项目语法十分相像,就临阵磨枪,查了一下小程序>微信小程序开发文档,照猫画虎改了改。在修改页面跳转传参时,遇到了一个奇怪的问题。

问题描述

小程序从home主页跳转到子页面时,有通过路由传参,调用方法为wx.navigateTo(Object object),中间做了json对象的JSON.stringify()的序列化,将结果拼接到了url后面,形式为:'path?key=value&key2=value2'。

但是在子页面的onload初始化方法中解析参数时,时不时地会出现参数解析失败的问题。

问题分析

        由于不太清楚小程序开发者工具如何调试,所以通过console.log进行辅助分析,看到子页面拿到的值,有些是不完整的,即:通过JSON.parse反序列化时有时会报错。

        盲猜可能是由于这种传参方式,由于URL长度的限制,所以导致参数过长时,会传递失败。

        在问答社区里面浏览了一阵子,看到下面这个帖子,符合初步的猜想。

解决方案

        于是开始寻找解决方案:

 使用encodeURIComponentdecodeURIComponent对字符进行编码和解码

【1】编码:encodeURIComponent,可把字符串作为 URI 组件进行编码,返回URIstring 的副本,其中的某些字符将被十六进制的转义序列进行替换。

 【2】解码:decodeURIComponent,可把字符串作为 URI 组件进行解码。返回URIstring 的副本,其中的某些字符将被十六进制的转义序列进行替换。

        于是修改之后的代码示例如下,果然不报错了。

【1】home发送页
wx.redirectTo({
   url: `../heartOrder/index?Info=${encodeURIComponent(JSON.stringify(obj))}`
})

【2】子页面接收
 onLoad(options) {
   let { Info} = options
   Info = JSON.parse(decodeURIComponent(Info))
}

 


http://www.niftyadmin.cn/n/5180641.html

相关文章

【VBA】基于EXCEL生成Insert语句工具

工具介绍 基于Excel生成INSERT语句工具是一个辅助工具,用于帮助用户根据Excel数据生成INSERT语句。通常,在数据库中插入大量数据时,手动编写INSERT语句会非常繁琐和耗时。而使用这个工具,可以通过Excel中的数据自动生成相应的INS…

如何修复msvcr120.dll丢失问题,常用的5个解决方法分享

电脑在启动某个软件时,出现了一个错误提示,显示“msvcr120.dll丢失,无法启动软件”。这个错误通常意味着计算机上缺少了一个重要的动态链接库文件,即msvcr120.dll。 msvcr120.dll是什么 msvcr120.dll是Microsoft Visual C Redist…

React 18 + Hooks +Ts 开发中遇到的问题及解决方案!

这篇文章是用来专门记录关于React 18 Hooks Ts 开发中遇到的问题及解决方案 Q1 问题描述: TS7016: Could not find a declaration file for module js-export-excel. /Users/zhangliangliang/WebstormProjects/daizhang-system-front/node_modules/js-export-exc…

H5游戏源码分享-超级染色体小游戏

H5游戏源码分享-超级染色体小游戏 游戏玩法 不断地扩大发展同颜色的色块 用最少的步数完成游戏 <!DOCTYPE html> <html><head><meta charset"UTF-8"><meta name"viewport"content"widthdevice-width,user-scalableno,init…

Git 我配置了ssh key,还是报错让我输入密码

Git 我配置了ssh key&#xff0c;还是报错让我输入密码 解决&#xff1a;配置为.git仓库&#xff0c;而不是HTTPS、 git push Username for ‘https://github.com’: xddun Password for ‘https://xddungithub.com’: remote: Support for password authentication was rem…

N9912A FieldFox 手持式射频分析仪,4 GHz 和 6 GHz

FieldFox 苏州新利通 N9912A 手持式射频分析仪 4 GHz 和 6 GHz 功能或可携性绝不打折 便携式分析仪 01 N9912A 手持式射频分析仪 主要测试功能 七合一的射频分析仪 电缆和天线测试、电缆故障定位、回波损耗测试、电缆损耗测试 矢量网络分析测试,显示史密斯圆图 矢量…

Ubuntu20.04软件安装顺序

目录 0.网卡驱动1. sogoupinyin2. terminator3.zsh4.显卡驱动(在cuda之前)5.CUDA与cudnn,TensorRT6.OpenCV(在ROS之前) 0.网卡驱动 参考我的博客Ubuntu20.04安装搜狗输入法 1. sogoupinyin 参考我的博客ubuntu20.04.6安装Intel AX211网卡驱动 2. terminator sudo apt-get …

自组织竞争网络在模式分类中的应用——患者癌症发病预测

大家好&#xff0c;我是带我去滑雪&#xff01; 自组织神经网络可以通过对客观事件的反复观察、分析与比较&#xff0c;自行提示内在规律&#xff0c;并对具有共同特征的事物进行正确的分类。该网络更与人脑中生物神经网络的学习模式类似&#xff0c;即可以通过自动寻找样本中的…