簡體   English   中英

如何使用JavaScript將編碼參數附加到網址?

[英]How to append encoded parameters to the url using javascript?

我有一個搜索輸入框,我將其數據附加到“#”之后的URL上,例如http://test.cl.com/#pqr xyz (使用哈希避免重新加載頁面)。 它工作正常,但是我的數據沒有被編碼,因為空格未用+%20代替。因此在附加之前,我正在使用encodeURI函數,然后將該值附加到URL,但仍然在地址欄中有空格字符。 在分配之前,我已經檢查了是否要附加正確的值(通過警告prq%20xyz )。

當前輸出: http://test.cl.com/#pqr xyz : http://test.cl.com/#pqr xyz所需輸出: http://test.cl.com/#pqr+xyz : http://test.cl.com/#pqr+xyz

請幫助我找出問題的原因。 謝謝!

<html>
<head>
<title>Test</title>
    <script type="text/javascript" src="jquery1.6.js"></script>
    <script type="text/javascript">
    $(document).ready(function(){

        $('#btn').click(function(){
             var url = encodeURI("pqr xyz");
              alert(url); // shows encoded value
             window.location.hash = (url);  
         });
    });
    </script>
</head>
<body>        

        <h3>sample app</h3>
        <button id="btn">
            append
        </button>


</body>

地址欄顯示未編碼字符的事實並不表示您的數據未正確編碼。 Firefox(例如)可以並且將嘗試對URL地址中的字符進行解碼,以使其更易於閱讀(我想)。

即使您將手動輸入一些編碼字符,例如,導航至:

http://google.com?opt=test%20me%20or%20not

地址欄中可見的url將被“解碼”-您不會看到%20。

編輯:要獲取加號而不是%20,您可以在使用encodeURI之前手動替換空格:

var url = encodeURI("pqr xyz".replace(/\s/, '+'));

看看下面的帖子。 它具有一個測試表單,您可以在其中查看每個Javascript編碼函數的輸出:

http://www.the-art-of-web.com/javascript/escape/

關於這些技術也有很好的討論。

干杯,

www.greyhound-computing.com

我猜您在Firefox上運行了測試。 現代版本的Firefox不會在哈希URL中將空格字符編碼為%20+

您可以通過將帶空格的哈希添加到任何url來進行簡單的測試。

其他瀏覽器將自動將空間轉換為%20 ,而不是現代Firefox。 而且它沒有任何問題,也不應在您的應用程序中造成任何問題。

如果您在使用解碼散decodeURIdecodeURIComponent -空間將被正確地解碼,所以應用程序會像用同樣的方式%20

最壞的情況是+字符,而該字符不會被decodeURI解碼回空格。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM