2014-09-26 148 views
1

我找到了從this question獲取查詢字符串的方法。但我無法通過ajax獲取請求頁面內的URL。如何在ajax頁面中查詢查詢字符串或URL?

實施例:

<div class="result"></div> 
<script> 
    $(function() { 
     $.ajax({ 
      url: 'ajax_inner.html', 
      type: 'GET', 
      data: 'somename=someval', 
      dataType: 'html', 
      success: function(data) { 
       $('.result.).html(data); 
      } 
     }); 
    }); 
</script> 

這是main.html中頁。以下是ajax_inner.html頁面。

<p>your query string is: <span class="qsval"></span>.</p> 
<script> 
    function getParameterByName(name) { 
     name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); 
     var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), 
      results = regex.exec(location.search); 
     return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); 
    }// getParameterByName 

    $(function() { 
     $('.qsval').text(getParameterByName('somename')); 
    }); 
</script> 

我無法從查詢字符串傳遞給ajax頁面。 我嘗試在裏面的ajax頁面,但它返回main.html頁面。

如何獲得查詢字符串 AJAX頁面?

回答

2

你要記住,使用.html注入<script>標籤將使腳本調用頁,而不是目標頁面上執行。您將需要得到服務器改變ajax_inner.html根據查詢字符串的內容。

那麼你要問自己,爲什麼你想對目標執行腳本,而不是你的成功回調裏面?爲什麼不這樣做:

success: function(data) { 
    $('.result').html(data).find(".qsval").text("someval"); 
} 

其中"someval"可以來自任何局部變量。

+0

因爲在我ajax_inner.html必須加載數據,並將其設置來選擇框,我不能使用.find之後。 要找到帶有選項[value =「someval」]的選擇框並使其通過此方法進行選擇是不可能的,因爲一旦ajax_inner.html在成功內部加載.find:在js內部ajax_inner.html未完成工作時工作。不過,我會找到另一種方式來改變它。謝謝 :) – vee 2014-09-26 10:34:27

2

基本上問題是,沒有帶有自己URL的「Ajax頁面」,只有一些HTML內容可以動態加載並插入其他頁面。如果你的ajax_inner.html內容是從頁面開始的,而不是動態加載的,那麼你的ajax_inner.html內容應該在同一個上下文中(儘管如果在加載時頁面上載入的腳本顯然已經執行得更快)。它沒有自己的範圍,因此僅僅指父/唯一頁面的location屬性。

你可能會混淆了 s,它有自己的頁面範圍,可以這麼說動態加載的HTML內容。