2011-06-18 5 views
0

jQueryで書かれた検索スクリプトがあります。クエリーを送信するには、ユーザーがEnterキーを押した後、#search/QUERY /のような結果ページのURLが作成されます。ただし、ページをリロードすると、別のページに移動した結果をクリックするか、検索結果が表示されなくなった前のページから戻ることができます。なぜこれができますか?ページリロード後に動的に生成された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、try window.location.hash。 RegExを使用することもできます。ウェブ検索をお試しください。多くの例があります。 – Emil

0

あなたはAJAX呼び出しを使用して動的に検索結果をロードしているためです。ページがリロードされると、その情報は失われます。

可能な解決策は、検索クエリおよび/または結果をユーザーセッションに格納することです。その後、ページのリロードにコンテンツを自動的に追加することができます。

関連する問題