Error in onLoad hook: “URIError: URI malformed“ found in…报错处理以及完善uniapp针对对象传参

使用uniapp传参的过程中遇到这么一个问题,当我们需要传整个对象作为参数时,我会先将这个对象先编码,然后再解码,从而获取到怎么参数,平常实操的时候也没有遇到过问题,但是今天测试的时候,刚好一个数据碰巧,就报错了,报错内容就是:

复制代码
//跳转前页面的方法
toDeviceDetail(deviceInfo) {
    //传参对象,使用encodeURIComponent编码
    let query = encodeURIComponent(JSON.stringify(deviceInfo))
	uni.navigateTo({
		url:'/pages/....../deviceDetail?deviceQuery='+ query
	})
},
 
 
// 跳转后页面获取的参数的方法
onLoad(options) {
    let obg ={}
    // 获取传递的对象参数,使用decodeURIComponent解码,并转为对象
    obj = JSON.parse(decodeURIComponent(options.deviceQuery));
}

bug原因是,如果编码的对象中的参数有"%",那么就会对编码跟解码造成问题,从而报错

解决方案:正常解码,编码时对所有"%"进行单独处理,手动转换为"%25",代码如下:

复制代码
toDeviceDetail(deviceInfo) {
    //传参对象,使用encodeURIComponent编码
    let str = JSON.stringify(deviceInfo)
    //注意这里------------------------------------------------------------------
    str = str.replace(/%/g, '%25')
    //这里---------------------------------------------------------------------------------
    let query = encodeURIComponent(str)
	uni.navigateTo({
		url:'/pages/....../deviceDetail?deviceQuery='+ query
	})
},

最终实现在uni-app中跳转页面并传递对象参数的需求 解决这个问题的关键就是需要手动转换为"%25"

相关推荐
子兮曰5 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰5 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万5 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝5 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋5 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁5 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
李少兄5 天前
JavaScript 隐式全局变量解析
javascript
汉堡大王95275 天前
Jev:不是聊天机器人, 而是一个智能 if 语句
前端·人工智能·后端
梦想很大很大5 天前
从运行事实到回归证据:Workrun 的 Telemetry 与 Evaluation 实践
前端·人工智能·后端
计算机魔术师5 天前
Meta Muse agent 接入 Shopify 的 Shop Pay 实现代理式购物
前端