2

我想從window.location提取哈希子字符串值,並將它們寫入HTML以供用戶查看,使用URL語法不允許使用?作爲查詢字符串分隔符。javascript查詢字符串> window.location.search.substring>使用#而不是?以開始查詢字符串

好了,所以我有這個偉大的代碼示例,這要歸功於@Gabe:

<html> 

<input type="button" id="test" value="Test" /> 

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script> 

<script> 

$(function() { 
    $('#test').click(function() { 

     window.location = (window.location); 
     GetURLParameter('source'); 

    }); 

}); 

function GetURLParameter(sParam) { 
    var sPageURL = window.location.hash.substring(1); 

    console.log(sPageURL); 

    var sURLVariables = sPageURL.split('&'); 
    for (var i = 0; i < sURLVariables.length; i++) { 
     var sParameterName = sURLVariables[i].split('='); 
     if (sParameterName[0] == sParam) { 

      alert(sParameterName[1]); 

      return sParameterName[1]; 
     } 
    } 
} 

</script> 

</html> 

我做了一個modifcatin到他的榜樣,所以我們使用來自客戶端的實際窗口的位置::

window.location = (window.location); 

當我打「測試」提交含有上述代碼的頁面上按鈕(URL形成這樣):

http://example.com/pagename.html#source=FOO&medium=BAR&campaign=FRED

(注意沒有?作爲查詢字符串分隔符,只是#

...然後我得到一個成功的警報,顯示從URL源「FOO」。真棒。

但如何,我得到了另外兩個SParamaterNames,然後我怎麼寫他們到頁面HTML,而不是返回一個警告。

我知道這是你們的基本問題。我來到這裏是因爲我一直在努力解決這個問題好幾天,看着許多差異化解決方案。任何幫助是極大的讚賞!!非常感謝你的所有巫師。

回答

3

locationobject

Here剛剛獲得hash值,而不是search值是一個工作的例子。

function GetURLParameter(sParam) 
{ 
    var sPageURL = window.location.hash.substring(1); 
    var sURLVariables = sPageURL.split('&'); 
    for (var i = 0; i < sURLVariables.length; i++) 
    { 
    var sParameterName = sURLVariables[i].split('='); 
    if (sParameterName[0] == sParam) 
    { 
     return sParameterName[1]; 
    } 
    } 
} 
+0

謝謝,沒有爲我工作。我在你的答案後更新了我的代碼示例。 –

+0

我沒有看到您在更新中嘗試使用散列。很明顯,它適用於我的jsfiddle示例。感謝Gabe ...... – Gabe

+0

......會更仔細地看你的小提琴。我嘗試在我的服務器上實施您的解決方案,但沒有奏效。將再試一次。 –