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

在uniapp中,当使用encodeURIComponent和decodeURIComponent处理含有百分号(%)的对象参数时,可能出现URImalformed错误。解决方案是在编码时将所有的百分号手动转换为%25,确保解码时的正确性。通过修改toDeviceDetail方法中的编码过程可以避免此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

Error in onLoad hook: “URIError: URI malformed“ found in

 原来uniapp针对对象传参编码(encodeURIComponent)和解码(decodeURIComponent)如下:

//跳转前页面的方法
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中跳转页面并传递对象参数的需求
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值