- 发布:2020-10-22 14:54
- 更新:2020-10-22 20:40
- 阅读:2915
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: win10
HBuilderX类型: 正式
HBuilderX版本号: 2.9.3
手机系统: 全部
手机厂商: 苹果
页面类型: vue
打包方式: 云端
项目创建方式: HBuilderX
测试过的手机:
示例代码:
// 父页面
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"
操作步骤:
// 父页面
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
[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"
2 个回复
chenli
可以考虑其它方式来跨页面传参,如果是使用uni.navigateTo跳转,可通过eventChannel向被打开页面传送数据
详情查看文档eventChannel
DCloud_UNI_GSQ
框架内部会执行 decodeURIComponent,你可以省略自己的 decodeURIComponent 步骤,或者增加 try catch