2017-06-20 12 views
-3

ユーザーが画面の下にスクロールしたときに発生する次のコードがあります。唯一の問題は、Ajaxコールが1回だけ起動するようにしたいということです。私のコードは次のとおりです。Ajaxコールを1回だけ作成するにはどうすればよいですか?

 var w = $(window); 
     window.onscroll = function(ev) { 
      if ($(document).height() - w.height() == w.scrollTop()) { 


       $('#loading-image').show(); 
       $.ajax({ 
        url: "page-2.html", 
        cache: false, 
        success: function(result){ 
         $("#part2").html(result); 
         console.log(); 
        }, 
        complete: function(){ 
         $('#loading-image').hide(); 
        } 
       }); 


      } 
     }; 
+0

ところで、Y uは必要ですかスクロールボトムのアヤックスは、私が知っているかもしれない? –

+0

@Riaz Laskarはい、ユーザーが一番下にスクロールした後にファイルをロードしたいからです。 – Mariton

+0

[Ajaxを一度だけ呼び出す方法](https://stackoverflow.com/questions/11738859/how-to- call-ajax-only-once) –

答えて

-1

あなたはこのように試すことができます:

var bottom_reached = false; 
     $(window).scroll(function(){ 
     if ($(window).scrollTop() == ($(document).height() - $(window).height())) { 
      bottom_reached = true; 

       $('#loading-image').show(); 
      if(bottom_reached) 
      { 
       bottom_reached = false; 
       $.ajax({ 
        url: "page-2.html", 
        cache: false, 
        success: function(result){ 
         $("#part2").html(result); 
         console.log(); 
        }, 
        complete: function(){ 
         $('#loading-image').hide(); 
        } 
       }); 

      } 
      } 
      }); 
0

あなたはグローバル変数を追加し、それをこのように確認することができます最も簡単な方法:

var w = $(window); 
var BOTTOM_REACHED = false; 
window.onscroll = function(ev) { 
    if ($(document).height() - w.height() == w.scrollTop() && !BOTTOM_REACHED) { 
     BOTTOM_REACHED = true; 
     $('#loading-image').show(); 
      $.ajax({ 
       url: "page-2.html", 
       cache: false, 
       success: function(result){ 
        $("#part2").html(result); 
        console.log(); 
       }, 
       complete: function(){ 
        $('#loading-image').hide(); 
        BOTTOM_REACHED = false; 
       } 
      }); 


     } 
    }; 
+0

うーん、いいえ、*「最も簡単な方法」*は、ボトムに達した後でイベントをアンバインドすることです。 –

+0

@KevinB、あなたか私のどちらかが質問を誤解しています。スクロールは1秒間に最大100回発射されますが、ajaxへの呼び出しは1つだけ必要です。到達した底はどういう意味ですか? –

+0

結果をロードした後でもう一度バインドしてください。別の関数を作成してバインド/バインドを解除する必要があります。これはもっとも簡単な方法です:) –

関連する問題