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”

相关推荐

  1. Uniapp 跨页面复杂对象

    2023-12-30 06:54:02       27 阅读
  2. uniapp页面怎么

    2023-12-30 06:54:02       39 阅读
  3. uniapp页面间的方法

    2023-12-30 06:54:02       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-30 06:54:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-30 06:54:02       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-30 06:54:02       87 阅读
  4. Python语言-面向对象

    2023-12-30 06:54:02       96 阅读

热门阅读

  1. 一周中的第几天

    2023-12-30 06:54:02       61 阅读
  2. 成功软件项目的规划和管理策略

    2023-12-30 06:54:02       66 阅读
  3. 27.移除元素

    2023-12-30 06:54:02       65 阅读
  4. xdoj结构体,综合题型,考试排名,拼数字

    2023-12-30 06:54:02       53 阅读
  5. kubernetes service和headless service有什么区别?

    2023-12-30 06:54:02       54 阅读