官方文檔地址:https://developers.weixin.qq.com ... /wx.navigateTo.html
(一)問題
看了文檔之后,傳一個參數沒有問題,就是如果你路由跳轉想傳對象,必須將對象轉換成字符串,
-
JSON.stringify()
復制代碼
當后臺數據 較復雜的時候,比如傳了個富文本格式的字符串
A頁面將其轉換成字符串,B頁面進行接收
-
//A頁面傳參 item是對象
-
var detailsData= JSON.stringify(item);
-
wx.navigateTo({
-
url:'/pages/plaza/project_intro/project_intro?detailsData='+detailsData
-
})
復制代碼
B頁面接收參數,console打印發現 字符串好像被截斷了許多
-
onLoad: function (options) {
-
console.log(options);
-
}
復制代碼
-
onLoad: function (options) {
-
var detailsDataObj = JSON.parse(options.detailsData);
-
console.log(detailsDataObj);
-
}
復制代碼
將其轉換成對象就會報錯。。。
(二)解決
看了其他博文說是,由于對象中包含 url 屬性,JSON.parse 方法無法解析包含“?“、”&”之類的字符
最后試了一下 通過js的一個方法進行編碼解碼。
-
encodeURIComponent() 函數可把字符串作為 URI 組件進行編碼。
-
-
decodeURIComponent() 函數可對 encodeURIComponent() 函數編碼的 URI 進行解碼。
A頁面進行 編碼再傳參
-
var detailsData= JSON.stringify(item);
-
//直接轉字符串 ,在下個頁面轉對象的時候會報錯,不知道是長度限制還是字符串有問題,所以使用encodeURIComponent轉碼
-
detailsData = encodeURIComponent(detailsData);
-
wx.navigateTo({
-
url:'/pages/plaza/project_intro/project_intro?detailsData='+detailsData
-
})
B頁面進行 解碼再讀取參數
-
onLoad: function (options) {
-
console.log(options);
-
var detailsDataStr = decodeURIComponent(options.detailsData);
-
var detailsDataObj = JSON.parse(detailsDataStr);
-
console.log(detailsDataObj);
-
}
console 成功打印出參數