0
我加載了一個將當前頁面的URL作爲參數的JavaScript文件。這裏是我使用的代碼:如何對URL進行編碼以將其作爲GET參數傳遞
document.write(unescape('%3Cscript src=\"' + _vis_opt_protocol + 'domain.com/js.php&a='+account_id+'&url='+encodeURIComponent(document.URL)+'&random='+Math.random()+'\" type=\"text/javascript\"%3E%3C/script%3E'));
我以爲encodeURIComponent將完成正確編碼URL的工作。但是,在加載JS文件時,瀏覽器也會解釋編碼的URL。例如,如果document.URL是http://example.com/?test=1#nono,那麼瀏覽器將測試解釋爲JS的另一個參數,並且不會在(包括)#nono之後發送任何內容,因爲它認爲它是錨點。
什麼是最好的方式來編碼的URL,以便它被傳遞到服務器?我也玩弄base64或其他形式的編碼。
感謝您指出。這是我的一個愚蠢的錯誤,我一直在尋找解決方案! – 2010-04-20 05:50:00
解決的辦法是,不要使用'unescape'。 (永遠!這是一個垃圾函數。)我認爲它在'document.write'中被用來僞裝字符串''中的'序列,這會通過儘早結束封閉的腳本塊而中斷。然而,Darin建議使用'<\ /'來做這件事情要好得多。 – bobince 2010-04-20 08:13:53