温馨提示:文章均来自网络用户自主投稿,风险性未知,涉及注册投资需谨慎,因此造成损失本站概不负责! |
记录一个看似很难的bug:URL请求自动编码格式,应该是字符串,却显示“%5Bobject%20Object%5D”;
后台参数:
exampleSingle.put("goods_id", goodsId);
exampleList.add(exampleSingle);
//前台取值
{{goodsInfo.goods_name}}
{{goodsInfo.goods_desc}}
立即订购
组装要重定向的 url:
buyRecommendGood: function (goodsInfo) {
console.log("组装前的goods_id:"+ goodsInfo.goods_id);
this.currentBuyGoodsId = goodsInfo.goods_id;
this.goodsUrl = goodsInfo.goods_url;
WebView.open(rootVM.buyRecommendGoodsUrl);
},
buyRecommendGoodsUrl: function() {
console.log("跳转推鉴商品的的URL:"+this.goodsUrl + "?goodsId=" + this.currentBuyGoodsId
+ "&shopId=" + this.shopId + "&qrcodeId=" + this.qrcodeId + "&from=fansCenter");
return this.goodsUrl + "?goodsId=" + this.currentBuyGoodsId
+ "&shopId=" + this.shopId + "&qrcodeId=" + this.qrcodeId + "&from=fansCenter";
}
按照正常逻辑,重定向的URL中的goodsId的值应该是一个字符串,但是商品转入测试后,测试响应中会出现乱码:
测试怀疑我的传递值有问题,我也很郁闷,因为我觉得逻辑上应该没有问题。
百度了一下url编码解码,解码后发现“%5Bobject%20Object%5D”是【Object Object】;
因此,我对自己的代码产生了怀疑,甚至在代码中添加了日志打印(如上图)
后来结合前面的代码综合分析,因为我们的页面和js是分离的,更新html后,加载了新的页面,而js仍然用在缓存中,所以传递的值是[Object Object] type,请求url时会自动编码,所以显示“%5Bobject%20Object%5D”
把之前的代码贴在这里方便大家理解,
HTML部分:
{{goodsInfo.goods_name}}
{{goodsInfo.goods_desc}}
立即订购
js部分:
buyRecommendGoodsUrl: function() {
return this.woYiShouLink + "?goodsId=" + this.currentBuyGoodsId
+ "&shopId=" + this.shopId + "&qrcodeId=" + this.qrcodeId + "&from=fansCenter";
}
buyRecommendGood: function (buyGoodsId) {
this.currentBuyGoodsId = buyGoodsId;
WebView.open(rootVM.buyRecommendGoodsUrl);
},
后台传值方式不变;
虽然是清除缓存的低级bug,但是还可以,但是在前后台交互的时候,尤其是发送url请求的时候,**在发送请求的时候加上编码:
个人推鉴:encodeURI() 或encodeURIComponent()
encodeURI() 是在 Javascript 中实际对 URL 进行编码的函数。
对整个url地址进行编码,但不对特殊含义的符号“; / ? : @ & = + $ , #”进行编码。 对应的解码函数是:decodeURI()。
编码 URIComponent()
可以编码“;/?:@&=+$,#”这些特殊字符。 对应的解码函数是decodeURIComponent()。
如果要传递带有 & 符号的 URL,请使用encodeURIComponent()
推鉴一个在线解码代码:
今天就这样吧;
2023-08-30 12:54:37
,某些文章具有时效性,若有错误或已失效,请在下方联系网站客服。1 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请联系客服QQ1041045050进行删除处理。
2 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
3 风险提示:合作之前建议签订合同,汇一线首码网作为信息共享平台无法对信息的真实性及准确性做出判断,不承担任何财产损失和法律责任,若您不同意该提示,请关闭网页且不要在本站拓展任何合作,否则造成的任何损失由您个人承担。