javascript
  • browser
  • encoding
  • 2010-04-20 108 views 0 likes 
    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或其他形式的編碼。

    回答

    2

    問題是您要求撤回的unescape函數做encodeURIComponent的工作。您可以試試這個:

    document.write('<script type="text/javascript" src="' + _vis_opt_protocol + 'domain.com/js.php&a=' + account_id + '&url=' + encodeURIComponent(document.URL) + '&random=' + Math.random() + '"><\/sc' + 'ript>'); 
    
    +0

    感謝您指出。這是我的一個愚蠢的錯誤,我一直在尋找解決方案! – 2010-04-20 05:50:00

    +0

    解決的辦法是,不要使用'unescape'。 (永遠!這是一個垃圾函數。)我認爲它在'document.write'中被用來僞裝字符串''中的 bobince 2010-04-20 08:13:53

    相關問題