2016-08-22 6 views
1

URLに検索条件のパラメータを取得しようとしていますので、特定の検索をコピーして貼り付けることができます。URLに検索条件を追加しましたが、戻ることができません

現在、私はこれがあります。結果がクリックされたときに、ユーザーが再度検索ページへ行くしようと、彼らが戻って得ることはありません、彼らが滞在:

// Search criteria in the url 
var ready = function(e){ 
    $("#filterrific_filter").click(function(){ 
     $.get($("#filterrific_filter").attr("action"), $("#filterrific_filter").serialize(), null, "script"); 
     history.pushState(null, document.title, $("#filterrific_filter").attr("action") + "?" + $("#filterrific_filter").serialize()); 
     e.preventDefault(); 
    }); 
    $(window).bind("popstate", function() { 
     $.getScript(location.href); 
    }); 
}; 
$(document).ready(ready); 
$(document).on('page:load', ready); 

問題があると同じページ。しかし、URLは変わります。事前に

Here is a video to display the problem

And here is a link to the webpage, if you would like to test it yourself

ありがとう!

+0

私のhistory/pushstate/popstateに関する知識は不足していますが、フィルタをクリックすると2つの履歴エントリが作成されます。私の推測では、準備とページの両方:ロードイベントが発生するので、用意された関数を2回呼び出して、重複するクリックハンドラを作成したり、プッシュステートを複製したりすることになります。 – yezzz

+0

jqueryを必要とするブートストラップのような、 – yezzz

+0

はい、私はローカルバージョンで修正しましたが、残念ながらこの問題では何も変わりません。 – FrankfromDenmark

答えて

0

は、このセクション全体を削除してください:

あなた apartments#showアクション以来
$(window).bind("popstate", function() { 
    $.getScript(location.href); 
}); 

(推測、あなたはRailsのバックエンドでのRESTfulな設計を使用していると仮定)AJAXを往復要求(ではありません、あなたのフィルタのような)、あなたのクエリ文字列URLはフィルタリングスクリプトをリロード時に正しく実行するので、戻るボタンをデフォルトの方法で動作させることもできます。

免責事項:これは、暗黙のうちに、より多くの文脈ではありません。それがあなたにとってうまくいかず、より多くの文脈を提供すれば、私は喜んで再訪するでしょう。

+0

それはうまくいかず、他の部分を削除してもURLは更新されませんが、問題はそこにある。 この問題の解決に役立つ可能性のあるコンテキストがありますか? – FrankfromDenmark

+0

私の提案を試したときに、正確に何をしましたか?また、なぜ2番目の '$(document).on( 'page:load'、ready)が必要なのですか? @ yezzzのコメントのように、重複ハンドラを設定している可能性があり、問題に寄与している可能性があります。 – rmhunter

+0

何も起こらず、結果は同じです。 私は '$(document).on( 'page:load'、ready);を削除しようとしました;そして、ページを最初にリフレッシュした場合にのみ動作します。 – FrankfromDenmark

関連する問題