微信小程序页面传参过长或者含有“?”
微信小程序页面跳转的参数如果过长或者传的参数本身就含有‘?’标志的时候,会中断传的参数
正常情况
// 传参页面 const data = { questions: that.data.questions, questionImgUrl: that.data.questionImgUrl } wx.navigateTo({ url: '../../pages/answer_questions/answer_questions?data=' + JSON.stringify(data) })
// 接受页面 onLoad: function (options) { that = this const option = JSON.parse(options.data) that.setData({ questions: option.questions, questionImgUrl: option.questionImgUrl }) },
问题1:questions字段非常长,含有100道题的话,字符串长度超过限制,微信会做截取(大致在45KB的数据量左右会被截取)
问题2:questionImgUrl可能会含有‘?’,有时候后端为了压缩图片减少流量的时候,传的image一般都会含有‘?’,‘https://XXXXX/question.jpg?x-oss-process=image/format,webp’,微信也会做截取
处理之后:
// 传参页面 const data = { questions: that.data.questions, questionImgUrl: that.data.questionImgUrl } wx.navigateTo({ url: '../../pages/answer_questions/answer_questions?data=' + encodeURIComponent(JSON.stringify(data)) })
// 接受页面 onLoad: function (options) { that = this const option = JSON.parse(decodeURIComponent(options.data)) that.setData({ questions: option.questions, questionImgUrl: option.questionImgUrl }) },