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

【报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

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