uni-app通过uni.navigateTo传递参数失败(传对象)

使用navigateTo()这种方法传对象,在跳转到的页面内打印传递参数,会发现得到的数据并不是想要的。如:
1、跳转

	// 详情
		myInInfoClick(obj) {
			// this.dataItem = obj;
			uni.navigateTo({
				url: './components/addIn?dataItem='+obj
			});
		},

2、获取

// onLoad 表示监听页面加载,其参数为上个页面传递的数据
	onLoad(option) {
		console.log(option);
	}

3、打印
在这里插入图片描述
4、原因
url传参时,不转换数据且当参数带有特殊字符的时候,会被截取数据,从而导致数据不完整。因此,想要解决这个问题,需要使用encodeURIComponent对数据进行解码。
5、解决办法
注意:使用encodeURIComponent进行编码的时候,需要对参数的特殊字符进行转换,并转换成string类型。
(1)编码

uni.navigateTo({
// obj 含有特殊字符 使用JSON.stringify()对特殊字符进行转化 并使用encodeURlComponent()进行编码 浏览器才能读懂
url:'./components/addIn?dataItem='+encodeURlComponent(JSON.stringify(obj))
});

(2)解码

总结:
先把数据JSON.stringify转string格式,再使用encodeURIComponent对数据特殊字符进行转换。跳转页面后,使用decodeURIComponent把特殊字符转回来,再使用JSON.parse转成对象格式即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值