1

奇妙な理由で、以下の ajax 関数が 2 回起動しています。loadMoreResults(); 関数は、サーバーからデータを取得するために使用されます。Google 開発者ツールを使用してサーバーに送信されたデータを追跡したところ、ajax リクエストが 2 回続けて実行されたことがわかりました。これは、ユーザーが速くスクロールしたときに発生すると思います。

 //Executed when user has scrolled bottom of the page
$(window).scroll(function (e) {
 if ($(window).scrollTop() == $(document).height() - $(window).height()) {
    loadMoreResults();
 }
 });

これが起こらないようにする方法について何か考えはありますか?あなたの助けに感謝。

4

2 に答える 2

5

あなたが言ったように、ユーザーのスクロールが速すぎて、ドキュメントが新しい結果で更新されないことが原因である可能性があります。

loadMoreResults()関数の実行中に が呼び出されないようにするフラグを使用してみてください。

関数の開始時に true に設定し、最後に結果を取得したら false に設定します。loadMoreresults()フラグのチェックは、フラグをに設定する前に、関数の最初に置くことができますtrue

例えば:

function loadMoreResults() {
  if (flag) return;
  flag = true;
[...]
  flag = false;
}
于 2013-01-25T07:52:27.020 に答える