前言

今天发现一个bug,平时ok的功能突然报错了,重复测了好几次发现是数据的问题,正常的数据里面没有百分号%,今天出现bug的数据里面有百分号%

在这里插入图片描述

原因

url加密传参有时候会出现Uncaught URIError: URI malformed的错误,这是因为你的url中包含了“%”字符,浏览器在对“%”执行decodeURIComponent时报错,正确的解决是将%全部替换为%25再进行传输

解決办法

方法1

urlStr.replace(/%/g, '%25');

方法二

既然知道是因为decodeURIComponent 报错,那我们就先把字符串转成encodeURIComponent

 let orderData = JSON.stringify(data)
 let newStr = orderData.replace(/%/g, '%25');
 uni.navigateTo({
    url: "/pages-cart/cart-order/index?orderData=" + encodeURIComponent(newStr)
              })

// 接受页面
 onLoad: function (options) {
    let optionData = decodeURIComponent(options.orderData )
	this.orderData = JSON.parse(optionData);
  },
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐