2011-06-18 133 views
0

我有用jQuery編寫的搜索腳本。要提交查詢,用戶按Enter鍵,然後創建結果頁面的URL,類似於#search/QUERY /。但是,當您重新加載頁面時,單擊轉到其他頁面的結果或從前一頁面返回時搜索結果不再存在。爲什麼會這樣呢?在頁面重新載入後加載動態生成的jQuery頁面

我jQuery代碼是:

$(document).ready(function(){ 
    $("#search").keyup(function(e){ 
     if(e.keyCode==13){ 
      var search=$(this).val(); 
      var query=encodeURIComponent(search); 
      var yt_url='search.php?q='+query; 
      window.location.hash='search/'+query+'/'; 
      document.title=$(this).val()+" - My Search Script"; 
      $.ajax({ 
       type:"GET", 
       url:yt_url, 
       dataType:"html", 
       success:function(response){ 
        $("#result").html(response); 
       } 
      }); 
     } 
    }); 
}); 

回答

0

當用戶重新加載javascript時,所有變量和函數都會重新初始化。 JavaScript不會傳遞頁面之間的變量。您可能需要服務器端解決方案,或使用JavaScript存儲。後者可能不適用於所有瀏覽器。

+0

@Callum,實際上您可能會嘗試將搜索查詢添加到頁面哈希#search = my-search,並在頁面加載時調用您的搜索函數(如果哈希存在)。這也將幫助你,因爲狀態被保存(後退按鈕)。 – Emil

+0

@callum,嘗試window.location.hash。您也可以使用RegEx。嘗試一個網絡搜索。有很多例子。 – Emil

0

這是因爲要動態與AJAX調用加載搜索結果。如果頁面重新加載,那麼這些信息就會丟失。

可能的解決方案是將搜索查詢和/或結果存儲在用戶會話中。然後,您將能夠在頁面重新加載時自動添加內容。