小程序 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM