关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

微信小程序wx.navigateTo跳转参数大小超出限制问题

发布时间:2023-06-29 22:00:42

微信小程序的跳转方式

  • wx.navigateTo(Object):保留当前页面,跳转到应用内的某个页面,使用 wx.navigateBack 可以返回到原页(新页面入栈)
  • wx.redirectTo(Object):关闭当前页面,跳转到应用内的某个页面(当前页面出栈,新页面入栈)
  • wx.switchTab(Object):跳转到 tabBar 页面,同时关闭其他非 tabBar 页面(非Tab页面全部出栈,只留下新的 Tab 页面)
  • wx.navigateBack(Object):返回上一页面(页面不断出栈)
  • wx.reLaunch(Object):关闭所有页面,打开到应用内的某个页面(页面全部出栈,只留下新的页面)

跳转携带参数的方法:在跳转的链接后接?参数名=参数

wx.redirectTo({  url: `../heartOrder/index?Info=${JSON.stringify(obj)}` })

   

跳转携带的参数必须转换为字符串,否则报错。


小程序跳转带参的字符长度是受限制的,如果字符过长,会被截取掉,解决办法如下:

使用encodeURIComponentdecodeURIComponent对字符进行编码和解码

encodeURIComponent(url):

可把字符串作为 URI 组件进行编码,返回URIstring 的副本,其中的某些字符将被十六进制的转义序列进行替换。

该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ’ ( ) 。其他字符(比如 :;/?: @&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。

decodeURIComponent(url) :

可把字符串作为 URI 组件进行解码。返回URIstring 的副本,其中的某些字符将被十六进制的转义序列进行替换。

跳转页

wx.redirectTo({  url: `../heartOrder/index?Info=${encodeURIComponent(JSON.stringify(obj))}` })

   

接收页

onLoad(options) {  let { Info} = options  Info = JSON.parse(decodeURIComponent(Info)) }

   


onShow上获取参数

// 1 获取当前的小程序的页面栈-数组 长度最大是10页面 let pages = getCurrentPages(); // 2 数组中 索引最大的页面就是当前页面 let currentPage = pages[pages.length - 1]; // 3 获取url上的type参数 const { type } = currentPage.options;

/template/Home/leiyu/PC/Static