2013-04-16 29 views
0

我正在使用jQuery來獲取導航文件的內容並將其加載到我的頁面的一部分。當通過jQuerys加載發送GET變量不可用

我給它提供了一個包含頁面名稱的值,所以我可以更新導航上的「活動」類。

下面是我用來顯示GET信息的代碼,它完美地工作,就像我從瀏覽器傳遞一個變量(即header.html?page = foo)時一樣,它完美地工作。

<script> 
    function getQueryParams(qs) { 
     qs = qs.split("+").join(" "); 
     var params = {}, 
      tokens, 
      re = /[?&]?([^=]+)=([^&]*)/g; 
     while (tokens = re.exec(qs)) { 
      params[decodeURIComponent(tokens[1])] 
       = decodeURIComponent(tokens[2]); 
     } 
     return params; 
    } 
    var $_GET = getQueryParams(document.location.search); 
    alert($_GET["page"]); 
</script> 

正如您現在所看到的,它只是顯示值的警報。

當我調用這個頁面,這是很簡單:

<script> 
    $("#header").load("header.html?page=bar"); 
</script> 

對於我的生活,我不明白爲什麼從.load叫時,它是回來爲「不確定的」,因爲我已經多次使用GET變量。

任何輸入將不勝感激,

克里斯。

+0

這是一個AJAX調用,所以沒有新的「文檔」與其響應相關聯。該腳本引用的'document.location.search'與頁面中的那個相同,我假設它沒有'page'參數。 –

回答

0

當Javascript正在運行.load時,document是原始文檔,而不是正在加載的頁面。

要將參數傳遞給正在加載的腳本,請使用全局變量。

+0

啊哈,這對我有意義。有沒有辦法實現這一點,而不使用任何服務器端腳本語言?理論上,如果JS正在加載到頁面上,我將能夠引用一個變量。 –

+0

將查詢參數放入一個全局變量中,並讓JS檢查該變量。 – Barmar

+0

已經工作,非常感謝!這一直在困擾着我很多年! –