Как я могу остановить бесконечный свиток ajax пост от получения удвоенных результатов иногда - PullRequest
1 голос
/ 07 марта 2020

У меня есть следующий код, который работает нормально и добавляет результаты к существующим результатам. Проблема в том, что иногда кажется, что функция запускается дважды и возвращает вдвое больше данных, которые я ожидаю.

Это происходит не каждый раз, но, возможно, 1 в 5 раз. Я думаю, что природа свитка поражает дно. Я попытался добавить 'var ajaxRunning', как показано ниже, но это все еще происходит. Кто-нибудь знает решение?

window.onscroll = function(ev) {    
var lastID = jQuery('.load-more').attr('lastID');        
var ajaxRunning = false;

    if ((window.innerHeight + window.pageYOffset) >= document.body.offsetHeight ) {       
        ajaxRunning = true;                
            jQuery.ajax({
                type:'POST',
                url:'getData.php',
                data:'id='+pager + '&location='+loc,                
                beforeSend:function(){
                    jQuery('.load-more').show();
                },
                success:function(html){
                    jQuery('.load-more').remove();
                    jQuery('#results').append(html);
                    pager++;
                },
            complete: function() {
            ajaxRunning = false;
            }
     });
}};

1 Ответ

1 голос
/ 07 марта 2020

Определите ajaxRunning глобально и используйте его в условии if:

var ajaxRunning = false;

window.onscroll = function(ev) {
  var lastID = jQuery('.load-more').attr('lastID');
  if (!ajaxRunning && (window.innerHeight + window.pageYOffset >= document.body.offsetHeight)) {
    ajaxRunning = true;
    jQuery.ajax({
      type: 'POST',
      url: 'getData.php',
      data: 'id=' + pager + '&location=' + loc,
      beforeSend: function() {
        jQuery('.load-more').show();
      },
      success: function(html) {
        jQuery('.load-more').remove();
        jQuery('#results').append(html);
        pager++;
      },
      complete: function() {
        ajaxRunning = false;
      }
    });
  }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...