JS關(guān)于URL編碼
url的三個(gè)js編碼函數(shù)escape(),encodeURI(),encodeURIComponent()
問題:
js中url編碼&符號后傳值給其它頁面,多參數(shù)網(wǎng)址作為整體編碼后傳值。(如:http://www.ilcng.com/index.html?id=http://ilcng.com/xmxy/?id1=1&id2=2)這個(gè)時(shí)候參數(shù)id所獲得的值并不是 http://ilcng.com/xmxy/?id1=1&id2=2而是http://ilcng.com/xmxy/?id1=1也就是說從&符號的地方截?cái)嗔耍驗(yàn)?amp;符號是特殊符號不能直接傳遞,需要經(jīng)過編碼以后才能傳遞撑帖。
結(jié)論:
escape()不能直接用于URL編碼,它的真正作用是返回一個(gè)字符的Unicode編碼值。比如"春節(jié)"的返回結(jié)果是%u6625%u8282毁渗,,escape()不對"+"編碼单刁,主要用于漢字編碼灸异,現(xiàn)在已經(jīng)不提倡使用。
encodeURI()是Javascript中真正用來對URL編碼的函數(shù)羔飞。編碼整個(gè)url地址肺樟,但對特殊含義的符號"; / ? : @ & = + $ , #",也不進(jìn)行編碼逻淌。對應(yīng)的解碼函數(shù)是:decodeURI()么伯。
encodeURIComponent()能編碼"; / ? : @ & = + $ , #"這些特殊字符。對應(yīng)的解碼函數(shù)是decodeURIComponent()卡儒。
我想要傳遞帶&符號的網(wǎng)址田柔,所以用encodeURIComponent()俐巴。
<script>
document.write(encodeURIComponent("http://www.ilcng.com/?id1=1&id2=2"));
</script>