2013-02-27 131 views
3

我知道你需要使用decodeURIComponent()的一些變體來做這樣的事情,但由於我對編碼和使用我在網上發現的一些代碼仍然相當陌生,我不知道如何改變它以適應我的需求。從URL參數中刪除%20

我所擁有的是一個函數,它可以從URL(其中有很多)中獲取我需要的每個URL參數。我必須使用這些變量作爲參數的其他功能,也可以在頁面上顯示,而且我不能讓%20消失。

function getUrlVars() { 
      var vars = {}; 
      parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { 
      vars[key] = value; 
      }); 
      return vars; 
     } 

從哪裏獲得使用各個變數:

var markname = getUrlVars()["mname"]; 

我試圖把decodeURIComponent()在該函數不同的地方,但我似乎無法得到它的工作。我也不確定它是否需要使用價值或變量。

value = decodeURIComponent(value); 

或者類似的東西...

任何幫助,將不勝感激!謝謝!

+0

什麼是一個例子值是錯誤的(你想解碼)? – 2013-02-27 00:44:32

+1

'decodeURIComponent()'是你正在尋找的。你能提供一個確切的問題的例子嗎? – Corylulu 2013-02-27 00:46:16

+0

我的URL看起來是這樣的: '的azazaz = 1h2pwR4ULN3GHAENYtww-gINXMgvxAaHBu5waliI與映射名稱=測試jnumber = 1234&更新= 01/01/01標記= 3&MNAME =要顯示與司機%20Reviver%20Locations' 因此,像司機齊磊定位需要嗎?屏幕,並顯示爲Driver%20Reviver%20Locations。在某些情況下,這些變量需要插入函數中,而且我擔心如果我不遏制所有最終會導致它自身崩潰的任何事情。 – 2013-02-27 00:55:53

回答

4

decodeURIComponent因爲你發佈應該可以正常工作。你還不如用空格代替加號,不要忘記將key解碼,以及:

function getUrlVars() { 
    var url = window.location.href, 
     vars = {}; 
    url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m, key, value) { 
     key = decodeURIComponent(key); 
     value = decodeURIComponent(value); 
     vars[key] = value; 
    }); 
    return vars; 
} 
+0

哦哇,非常感謝。我沒有意識到我需要這樣做。是否有理由將密鑰和值都解碼? – 2013-02-27 01:05:51

+0

我不能說它經常發生,但鍵當然可以包含編碼字符。 – Bergi 2013-02-27 01:26:55

+0

謝謝@Bergi – AmanKumar 2018-01-13 13:22:39