乐趣区

关于前端:微信小程序报错Unexpected-end-of-JSON-input问题分析

问题截图:

起因剖析:

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 了

退出移动版