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

        今天后端大兄弟突然拿着一个反编译过来的小程序源码,问能不能改。我心里直道好家伙,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} = optionsInfo = JSON.parse(decodeURIComponent(Info))
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/174445.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RT-Thread系列10——ETH网口设备

文章目录 1. ETH测试第一步:cubemx配置。第二步:board.h配置。第三步:rtthread settings配置第四步:以太网复位引脚设置第五步:修改rtthread源码第六步:修改 cubemx 生成的 main 函数第七步:编译…

单链表经典OJ题(三)

目录 1、反转链表 2、合并两个有序链表 3、链表的中间结点 4、环形链表的约瑟夫问题 5、移除链表元素 6、移除元素 1、反转链表 206. 反转链表 - 力扣(LeetCode) 翻转链表的实质就是更改当前结点的前驱结点和后继结点 假设原链表为:1->2->…

【教3妹学编辑-mysql】mybatis查询条件遇到的坑及解决方案

2哥 :3妹,今天怎么下班这么晚啊。 3妹:嗨,别提了,今天线上出bug了, 排查了好久。 2哥:啊,什么问题呀? 3妹:我们内部的一个管理系统报错了, 最近排查下来是myb…

[CANN训练营]UART通信笔记

文章目录 前言一、前提知识1.串行通信2.并行通信3.单工、半双工、全双工通信3.1单工通信3.2半双工通信3.3全双工通信 4.补充:通信速率 二、UART通信1.UART通信2.UART工作原理 总结 前言 在ROS学习中,我们在入门基础除了ROS的小乌龟外,在通信…

YOLOV5中parser参数配置

源码下载链接:ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite (github.com) 需要配置的参数:--data parser.add_argument(--data, ...):添加一个用于数据配置文件的路径的参数。 可以直接修改&am…

【算法|动态规划 | 区间dp No.1】AcWing 282. 石子合并

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【AcWing算法提高学习专栏】【手撕算法系列专栏】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程&a…

视频封装格式

FLV(Flash Video) FLV封装格式 Tag Data分为Audio,Video,Script三种 TS(Transport Stream)传输流 TS文件分为三层,(倒叙更好理解) TS层:在PES层基础上加入…

易点易动固定资产管理系统助您轻松应对复杂的固定资产管理挑战

在现代企业运营中,固定资产是企业的重要财产,对于企业的发展和运营至关重要。然而,随着企业规模的扩大和业务的复杂化,固定资产管理面临着越来越多的挑战。传统的手工管理方法已经无法满足企业的需求,因此,…

蒙特卡洛树搜索(Monte Carlo Tree Search)揭秘

一. 什么是蒙特卡洛树搜索 蒙特卡洛树搜索(MCTS)是一种启发式搜索算法,一般用在棋牌游戏中,如围棋、西洋棋、象棋、黑白棋、德州扑克等。MCTS与人工神经网络结合,可发挥巨大的作用,典型的例子是2016年的AlphaGo,以4:1…

viple模拟器使用(一):线控模拟

(1)unity模拟器 通过viple程序,将viple编写逻辑运行在unity模拟器中。 首先编写viple程序,逻辑:设置一个机器人主机,并且,按↑、↓、←、→方向键的时候,能分别控制模拟机器人在unity模拟器中运行。 主机…

【软考篇】中级软件设计师 第二部分(一)

中级软件设计师 第二部分(一) 八. 层次化结构8.1 局部性原理8.2 体系8.3 分类8.3.1 存取方式8.3.2 工作方式 8.4 Cache8.4.1 例题 8.5 地址映像 九. 主存编址9.1 例题一 十. 可靠性10.1 串联系统和并联系统 十一. 网络安全11.1 保密性11.2 完整性&#x…

蓝桥杯每日一题2023.11.13

题目描述 蓝桥杯大赛历届真题 - C 语言 B 组 - 蓝桥云课 (lanqiao.cn) 题目分析 由于每次吹灭的蜡烛与年龄相同故我们想到使用前缀和可以让我们求出各个区间的和,我们将每个区间都枚举一遍,如果符合要求就输出区间开始的位置(答案&#xff…