2

问题截图:

image

原因分析:

JSON.parse无法识别某些url中的特殊字符,所以报错

原错误写法:

页面跳转:

netStepFn() {
  uni.navigateTo({
    url: "/app/course/shopping?data=" + JSON.stringify(this.infoDict)
  });
},

新页面取参:

onLoad(option) {
    // console.log(JSON.parse(option.data));
    this.data = JSON.parse(option.data);
}

解决办法:

JSON.stringify()之后将变量使用encodeURIComponent函数处理,这个encodeURIComponent() 函数可以把字符串作为 URI 组件来进行编码。在跳转到目标页面接收时用decodeURIComponent对URI 组件进行解码,后面在通过JSON.parse()将变量还原,这样子就能达到预期效果了

正确代码:

netStepFn() {
  let infoDict = JSON.stringify(this.infoDict);
  uni.navigateTo({
    url: "/app/course/shopping?data=" + encodeURIComponent(infoDict)
  });
},
onLoad(option) {
    let paramsData = decodeURIComponent(option.data);
    // console.log(JSON.parse(option.data));
    this.data = JSON.parse(paramsData);
  }

ok了


AaronYuan
1.5k 声望57 粉丝

代码逻辑很重要