小程序 url传参 参数值过长 接收时候 内容不全的问题

原因:wx.navigateTo 路由跳转传参url?id=2 ; 多个参数通过&链接进行参数拼接 ; 但是url是有长度限制机制存在的 , 参数过多 , 拼接后导致url的整体长度过长 , 传递和接收时会导致参数不完整 , 异常情况~~

解决方法1
eventChannel 新增页面间通信接口,用于监听被打开页面发送到当前页面的数据 ; 低版本要做兼容处理

/**
 * 例子中 eventChannel 为新增 路由events 事件 res 中可直接获取到实例 调用 emit 触发事件, 类似vue中的组件间通信 on emit 方法; 之后我们在接收页面onLoad onShow 中获取监听
 */

uni.navigateTo({ //跳转页面
    url: './afterSale',
    events: {},// 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据
    success: function (res) {
        res.eventChannel.emit('getData', item)  //触发事件
    }
})

/**
 * onLoad onShow 中通过 this.getOpenerEventChannel() 获取 eventChannel 实例 同时使用 on 方法进行监听接收传参数据
 */
onLoad: function(options) { //接收页面
    const eventChannel = this.getOpenerEventChannel();
    eventChannel.on("getData",data => {
         console.log(data)
    });
}

/**
 * 例子中 eventChannel 的只是部分能力的使用 ,  eventChannel 更多的功能可参考文档结合实际场景扩展使用
 */

解决方法 2

用法不再赘述 , 用到的方法容易理解 , 用法也简单

uni.navigateTo({ //跳转页面
    url: './afterSale?id=' + id + '&orderData=' + encodeURIComponent(JSON.stringify(item))
})

/**
 * 
 */
onLoad: function(options) { //接收页面
    const order = JSON.parse(decodeURIComponent(options.orderData));
    console.log(order)
}

其他方法 : 可以通过全局变量 globalData , 或者本地缓存进行解决 , 不再赘述 , 实现方法简单

原文链接:https://blog.csdn.net/a1441574/article/details/118959681?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0.no_search_link&spm=1001.2101.3001.4242.1

原文地址:https://www.cnblogs.com/cyfeng/p/15660509.html