8

私は現在 Code Igniter を使用してきれいな URL を取得しており、基本的に ajax を使用してジムを検索できるこのシステムを使用しています。

次のように、ジムのリストがロードされた後にプッシュ状態を使用しています。

example.com/list/search_key/pagination-page/sort-by/filters~seperated~by~that

search_key は、ジムを検索したい地域の都市、州、または近隣であり、フィルターは個々のチェックボックスです。

.ajax を使用して検索キーと個々のチェックボックスの値 (1 または 0) をポスト経由で送信すると、コード イグナイターが POST データと PHP を使用して上記のような URL を生成します。ajax 成功プッシュは、URL が PHP によって生成されたものであることを示しています。

問題は、たとえばページネーションを使用してページ 2 に移動し、ページ 1 に移動する場合、当然ブラウザの戻るボタンを使用することです。問題は、URL アドレス バーを現在の URL の前の URL に戻すだけで、実際にはページのコンテンツを変更しないことです。古い(前の)URLを使用してページをリロードするか、更新するか、または何かを行う必要があります。

URLデータを使用してフォームを再送信するためにajaxを使用することもできますが、これを行う方法がわかりません。

いくつか試してみましたが、何も機能しません。グーグルの最初のページでほとんどすべてを試しましたが、すべてが有望に思えますが、実際には何も機能しません。

プッシュステートの URL が以前の URL に変更された場合、ページを更新する方法はありますか?

PS Heres は、私が試したいくつかの重要なことです。

<script type="text/javascript">
$(window).unload(function(e){
   e.preventDefault();
   alert("Back was pressed!");
});
// If this wouldve worked, it wouldve atleast alerted me that.

// The code off this URL: http://www.mrc-productivity.com/techblog/?p=1235

// Some of the codes off this URL: http://forum.jquery.com/topic/howto-force-page-reload-refresh-of-previous-page-when-back-button-is-pressed

// A few others.
</script>
4

1 に答える 1

18

ajax 成功メソッドから状態をプッシュしているため、メソッドを使用して戻るボタンを検出できますwindow.onpopstate

history.pushState() または history.replaceState() を呼び出すだけでは popstate イベントはトリガーされないことに注意してください。popstate イベントは、戻るボタンをクリックする (または JavaScript で history.back() を呼び出す) などのブラウザー アクションを実行することによってのみトリガーされます。

var stateObj = { foo: "bar" };
history.pushState(stateObj, "page 2", "bar.html");

window.onpopstate = function(event) {
    if(event && event.state) {
        // event.state.foo
    }
}
于 2012-07-30T22:59:42.703 に答える