微信小程序携带参数跳转页面出现Unexpected end of JSON input;at "xxx" page lifeCycleMethod onLoad...

前言:最近做小程序项目,商城类的项目,下单时出现了Unexpected end of JSON input;at "xxx" page lifeCycleMethod onLoad...这个问题,下单时携带参数跳转到下单页面,使用

JSON.stringify转化数据,将数据携带到下一个页面,使用JSON.parse转为出现问题,下面一起来解决一下这个问题.

在微信小程序页面上解析html语法并显示在页面上,查看网址:https://www.cnblogs.com/0314dxj/p/12738880.html

数据格式:因为该商品的详情是用富文本编辑器编辑的数据,所以拿到的数据格式一个带html语法的格式,例如:

detailes:'<p >微信小程序,小程序的一种,英文名Wechat Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,
用户扫一扫或搜一下即可打开应用。
全面开放申请后,主体类型为企业、政府、媒体、其他组织或个人的开发者,均可申请注册小程序。微信小程序、微信订阅号、微信服务号、微信企业号是并行的体系。
微信小程序是一种不用下载就能使用的应用,也是一项创新,经过将近两年的发展,已经构造了新的微信小程序开发环境和开发者生态。
微信小程序也是这么多年来中国IT行业里一个真正能够影响到普通程序员的创新成果,已经有超过150万的开发者加入到了微信小程序的开发,
与我们一起共同发力推动微信小程序的发展,微信小程序应用数量超过了一百万,覆盖200多个细分的行业,日活用户达到两个亿,微信小程序还在许多城市实现了支持地铁、公交服务。
微信小程序发展带来更多的就业机会,2017年小程序带动就业104万人,社会效应不断提升。 [1] 
2017年1月9日,张小龙在2017微信公开课Pro上发布的微信小程序正式上线
</p>
<img src="https://bkimg.cdn.bcebos.com/pic/dcc451da81cb39dbeb543df1de160924aa183084?x-bce-process=image/resize,m_lfit,w_268,limit_1/format,f_jpg">'

显示回来的数据是带html语法的,有图片有文字,现在是要将这些东西传递给下一个页面

 let data = JSON.stringify(this.data.details) // 传递的数据必须是string类型
 wx.navigateTo({
   url: "/pages/meaning/meaning?data=" + data
  })

子页面接收数据:

that.data.commodity = JSON.parse(options.data);

注意:这样写是没有问题的,但是如果传递过来的字段里面是有图片img的,解析时会直接报错,显示Unexpected end of JSON input;at "xxx" page lifeCycleMethod onLoad...,在页面上是显示不出来的(线上亲身入过坑...)

查阅了资料才知道是有特殊的字符url解析不了。

解决方法:

// 传递数据跳转页面
let data = JSON.stringify(this.data.details) wx.navigateTo({ url: "/pages/meaning/meaning?data=" + encodeURIComponent(data) }) // encodeURIComponent加上这个方法
// 子页面接收数据显示:

  let data = decodeURIComponent((options.data)); // decodeURIComponent()加上该方法

  that.data.commodity = JSON.parse(data);

这样错误就解决了,亲测有效