3

ページ A:

$(document).ready(function () {
    bindData();
});

function bindData() {
    $('#searchbtn').bind('click', function () { SearchResult(); });
}
function SearchResult() {
 ajax call...
}

ページ A HTML:

<input type="button" id="searchbtn" />

ページ B の詳細 ---> このページは、ページ A の検索リストから特定の検索結果を選択した後に表示されます

    <a href="javascript:history.back();">Back</a><br />

ページに戻ると、AI は検索基準が選択されているのを確認できますが、結果の Div は表示されません。私がやろうとしているのは、ページが戻ってきたときに検索リストをそのままにしておきたいということです。ここでできることは、ページが戻ってきたときに searchbtn クリック イベントをもう一度呼び出して、リストが再び表示されるようにすることだと思います。ページがページBから戻ってきたときにのみsearchbtnクリックイベントを発生させる方法を誰か教えてもらえますか..ありがとう

4

3 に答える 3

1

ブラウザーの [戻る] ボタンは、AJAX では長い間問題がありました。スクリプト、回避策、およびテクニックがあります (使用するフレームワークによって異なります)。

(投稿された JavaScript 構文に基づいて) jQuery を使用しているように見えるため、戻るボタン jQuery プラグインに関する別の Stackoverflow 投稿へのリンクを次に示します。

于 2012-12-06T18:42:51.710 に答える
1

history.back()最後にアクセスした URL に戻ります。つまり、ユーザーのアクセス中に行われた ajax 呼び出しが自動的に繰り返されることはありません。ブラウザーはフォームの選択を自動的に復元する場合がありますが、関数はイベントSearchResults()によってのみ呼び出され、選択イベントでは呼び出されませんclick

sammy.jsなどのフレームワークを使用して、URL を ajax 状態にバインドできます。に関連付けhistory.back()られた URL に移動しますSearchResults()

于 2012-12-06T18:43:17.997 に答える
0
    function bindData() {
    var chkinput1 = $("input:checkbox[name=x]:checked").length;
    var chkinput2 = $("input:checkbox[name=y]:checked").length;

    if (chkinput1 > 0 && chkinput2 > 0) {
       SearchResult();
     }
    $('#searchbtn').bind('click', function () { SearchResult(); });
    }

これがこの結果を達成するための最悪の方法であることはわかっていますが、他のプラグインを使用して複雑さを追加する代わりに、今のところこれを使用すると思います. 他の誰かが同じ質問を探している場合、これはベストプラクティスではありません。履歴に戻ると、チェックボックスのキャッシュされた入力選択に応じて検索結果を再度呼び出し、ajax 呼び出し全体を再度生成するためです。リストを表示します。最初のリクエストで、私はリストをキャッシュし、スライド式の有効期限を設定しているので、カムバックに時間がかからず、誰もが幸せに暮らしています.

于 2012-12-07T17:47:48.640 に答える