問(wèn)題描述
uniapp項(xiàng)目中頁(yè)面跳轉(zhuǎn)時(shí),通過(guò)url傳參,參數(shù)為一個(gè)包含特殊的字符的對(duì)象并內(nèi)容比較多,導(dǎo)致不能正常傳參文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-679455.html
原因分析:
1、有些符號(hào)在URL中是不能直接傳遞的,如果要在URL中傳遞這些特殊符號(hào),那么就要使用他們的編碼了。編碼的格式為:%+字符的ASCII碼,即一個(gè)百分號(hào)%,后面跟對(duì)應(yīng)字符的ASCII(16進(jìn)制)碼值。例如 空格的編碼值是"%20"。?
2、url參數(shù)有長(zhǎng)度限制,參數(shù)太長(zhǎng)就會(huì)顯示不全文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-679455.html
解決方案:
- ?參照上面特殊字符對(duì)應(yīng)的編碼,使用replace加正則替換
- 參數(shù)為對(duì)象時(shí),使用JSON.stringify()轉(zhuǎn)換成字符串,頁(yè)面接收時(shí)再使用JSON.parse()轉(zhuǎn)換成對(duì)象
- 參數(shù)比較多時(shí)且內(nèi)容復(fù)雜使用encodeURIComponent() 轉(zhuǎn)碼,decodeURIComponent() 解碼,參數(shù)需要先JSON.stringify()再轉(zhuǎn)碼,頁(yè)面接受先將參數(shù)解碼再使用JSON.parse()
let obj = this.list[index] // obj為一個(gè)對(duì)象內(nèi)容比較多且包含了特殊字符
1、先替換參數(shù)中包含的特殊符號(hào)
let formatObj = obj.replace(/\%/g,"%25")
formatObj = obj.replace(/\#/g,"%23")
formatObj = obj.replace(/\&/g,"%26")
formatObj = obj.replace(/\?/g,"%3F")
2、再將參數(shù)進(jìn)行解碼再傳參? ? ? ??
uni.navigate To({
url:'/pages/list/detail?item=' + encodeURIComponent(JSON.stringify(formatObj))
})
// 接收頁(yè)面
onLoad (option) {
this.info = JSON.parse(decodeURIComponent(option.item))
}
到了這里,關(guān)于URL傳參時(shí),參數(shù)包含有特殊字符(%、#、&)的處理方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!