mmh_xiaofu
mmh_xiaofu
  • 发布:2020-10-22 14:54
  • 更新:2020-10-22 20:40
  • 阅读:3038

【报Bug】页面跳转uni.navigateTo 通过 encodeURIComponent(JSON.stringify()) 编码内容出现% 子页面解码时出错

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10

HBuilderX类型: 正式

HBuilderX版本号: 2.9.3

手机系统: 全部

手机厂商: 苹果

页面类型: vue

打包方式: 云端

项目创建方式: HBuilderX

测试过的手机:

小米6 苹果ios 6s

示例代码:
复制代码// 父页面  
uni.navigateTo({  
url: "/pages/publish/goods/onlineGoods/onlineGoodsPicture?data="+encodeURIComponent(JSON.stringify("测试内容%测试内容"))  
})  
// 子页面  
onLoad(options) {  
   if(options&&options.data) {  
    console.log(decodeURIComponent(options.data))  
  }  
},  
// 页面报错信息:  [Vue warn]: Error in onLoad hook: "URIError: URI error"

操作步骤:
复制代码// 父页面  
uni.navigateTo({  
url: "/pages/publish/goods/onlineGoods/onlineGoodsPicture?data="+encodeURIComponent(JSON.stringify("测试内容%测试内容"))  
})  
// 子页面  
onLoad(options) {  
   if(options&&options.data) {  
    console.log(decodeURIComponent(options.data))  
  }  
},  

// 页面报错信息:   [Vue warn]: Error in onLoad hook: "URIError: URI error"

预期结果:

展示正确的解码数据

实际结果:

[Vue warn]: Error in onLoad hook: "URIError: URI error"
URIError: URI error __ERROR

bug描述:

页面跳转时 uni.navigateTo 通过 encodeURIComponent(JSON.stringify()) 编码传递参数时,如果内容出现% 时 ,在子页面通过decodeURIComponent 解码时出错。

复制代码// 父页面  
uni.navigateTo({  
url: "/pages/publish/goods/onlineGoods/onlineGoodsPicture?data="+encodeURIComponent(JSON.stringify("测试内容%测试内容"))  
})  
// 子页面  
onLoad(options) {  
   if(options&&options.data) {  
    console.log(decodeURIComponent(options.data))  
  }  
},  
// 页面报错信息:  [Vue warn]: Error in onLoad hook: "URIError: URI error"
2020-10-22 14:54 负责人:无 分享
已邀请:
chenli

chenli

可以考虑其它方式来跨页面传参,如果是使用uni.navigateTo跳转,可通过eventChannel向被打开页面传送数据
详情查看文档eventChannel

DCloud_UNI_GSQ

DCloud_UNI_GSQ

框架内部会执行 decodeURIComponent,你可以省略自己的 decodeURIComponent 步骤,或者增加 try catch

该问题目前已经被锁定, 无法添加新回复

  • 标题 / 粗斜体
  • 代码片段
  • 超链接 / 图片 / 视频
  • 列表 / 引用

文章内容较多时,可以用标题分段 :

## 大标题 
### 小标题

斜体 / 粗体 :

**粗体** 
*斜体*
***粗斜体***

代码片段 :

``` javascript
代码片段
```

超链接 :

[链接文字](链接地址) 例: [百度](http://www.baidu.com)

图片 :

![图片说明](图片地址) 例: ![百度logo](http://www.baidu.com/img/bdlogo.gif)

视频 :

!![视频说明](视频地址) 例: !![优酷视频](http://youku.com)

有序列表 :

1. 123
2. 123
3. 123

无序列表 :

- 123
- 123
- 123

引用 : ( 双回车后结束引用 )

> 引用内容
引用内容
引用内容