2017-06-21 162 views
-1

以下代碼用於獲取URL參數。decodeURI /在URL問題中替換%20

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

<script type="text/javascript"> 
var url = window.location.protocol + "//" + window.location.hostname; 
</script> 

帶有上述代碼的頁面通過另一頁上的鏈接進行訪問。在那個鏈接中,我傳遞了新聞項目ID和標題。 當具有上述代碼的頁面加載URL中的標題時,將使用%20代替所有空格。 我讀過這個,發現我需要使用decodeURI或decodeURIComponent。我試圖在很多地方做到這一點,並在瀏覽器中提醒結果,但我似乎無法擺脫URL中標題的%20,所以很顯然我沒有在右邊做這件事地點。

這是我的結果....

http://PAGE URL HERE/NewsArchive.aspx?Story=New%20site%20launched&ID=17 

我相信我莫名其妙地需要包括/ 20%/克,正則表達式「 - 」在替換變量的部分,但是我有旁邊沒有正則表達式的知識。

可能有人讓我知道我需要做的,因爲我畫一個空白。我見過很多類似的文章,但沒有解釋它對我的低級知識。

我也張貼在SharePoint堆棧交換,因爲這正與SharePoint使用,但我還沒有那個爲我工作的任何答案。

任何幫助表示讚賞。

+1

參見 - https://stackoverflow.com/questions/12042592/decoding-url-parameters-with-javascript –

回答

0

我不知道我理解的問題,但看起來你只是想取回參數?如果使用URL中的參數在頁面上打開開發者控制檯(chrome中的f12),則可以鍵入window.location並查看對象的所有屬性。如果輸入window.location.href,則可以看到完整的URI。一個簡單的方法來分離這是使用.split

window.location.href.split('?')[1]會給你?字符之後的一切。您可以使用decodeUri(window.location.href.split('?')[1])來獲取正常的字符串。

只要記住由split返回數組索引爲零。

編輯迴應評論: 您正在尋找的技術是history.replaceState。更多詳情here。我會強烈建議徹底瀏覽。

history.replaceState(null, "/NewsArchive.aspx", "Story=New-site-launched&ID=17") 
+1

'window.location.href.split( '?')[1]''== location.search.slice(1)' – dandavis

+0

對不起,我的問題有點模棱兩可。我想要做的是,在頁面加載時,是改變從URL參數的故事=新建%20site%20launched&ID = 17的故事=新站點推出&ID = 17 無論我嘗試做我似乎無法影響theURL – Ian

+0

@ Ian我更新了我的答案。希望這就是你要找的。 –