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