2011-04-05 163 views
0

我將值傳遞給由JavaScript解釋並用於填充表單元素的URL查詢字符串。用戶點擊一個頁面上的鏈接,轉到另一個頁面,然後解碼URL中的值並填充表單域。window.open(),瀏覽器地址欄和jQuery url解碼

要解碼URL,我正在使用jQuery URL Decoder plugin

這是參數傳遞給window.open()

http://mydomain.com/whatever?EmailAddress=me%40privacy.com&YourName=joe%20schmo&CompanyName=TEXAS%20A%20%26%20M%20-%20LUBBOCK%2C%20TX 

當我插上該URL到解碼器的網絡版,它是正確解析 - 查詢字符串參數在.params對象,正確的解碼。

然而,當點擊該鏈接後,當我檢查window.location.href,我得到這個:

http://mydomain.com/[email protected]&YourName=joe%20schmo&CompanyName=TEXAS%20M%20&%20M%20-%20LUBBOCK,%20TX 

其中散發出來的URL解碼器,作爲一個巨大的爛攤子(即不正確,因爲IMO解碼輸入沒有正確編碼)。

我如何(安全地)返回由URL解碼器正確解釋的字符串?

+0

您是否嘗試過使用內建的'encodeURIComponent'和'decodeURIComponent'來代替? – 2011-04-05 15:31:25

回答

1

使用JavaScript函數是這樣的:

function urlencode(str) { 
return escape(str) 
     .replace(' ', '%20') // or replace with '+' 
     .replace('@', '%40'); 
} 

(我知道你不需要先更換但這是更完整的...因爲你需要,你可以添加更多的替換它們或搜索完整的urlencode)

+0

真正棘手的部分來自CompanyName參數中的(難以看到)未編碼&符號。 – 2011-04-05 18:54:30

相關問題