zoukankan      html  css  js  c++  java
  • 小程序 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

  • 相关阅读:
    [转]OOA/OOD/OOP区别
    Get / Post
    1.PHP环境搭配
    6.WCF Rest
    消除关闭按钮时的IE弹出提示
    TSQL DML学习笔记
    javascript 中类的定义
    $().each() 与 $.each()区别,以及 jquery ajax 应用
    TSQL 数据库的创建
    删除用户表 存储过程 索引..
  • 原文地址:https://www.cnblogs.com/cyfeng/p/15660509.html
Copyright © 2011-2022 走看看