ajax looping settimeout, новый запрос только после завершения предыдущего запроса - PullRequest
0 голосов
/ 01 сентября 2018

Я пытаюсь вызвать функцию ajax несколько раз, чтобы получить данные из моей таблицы чата, и добавляю данные в div, только если в этой таблице есть новые сообщения. мой код

(function CallThat() {
    $.ajax({
      url:'intervalog.php',
      method:'POST',
      data:{datime:mylmsgt},
      success:function(data){
      if(data!=5){
      $('#intrmylmsgt').load('intrmylmsgt.php');
      $('#chatlogs').append(data);
      }
      }
        });
setTimeout(CallThat, 1000);
}());   

это прекрасно работает только в течение 10-15 секунд, после чего он начинает непрерывно выдавать эти ошибки в консоли (jquery.min.js)

  POST http://******/intervalog.php 0 ()

после того, как эта страница застряла, и я должен закрыть эту страницу. Я думаю, что проблема в том, продолжает ajax-запрос без выполнения предыдущих запросов, какие-либо решения?

1 Ответ

0 голосов
/ 01 сентября 2018

вы должны использовать async: false для синхронной работы ajax

(function CallThat() {
    $.ajax({
      url:'intervalog.php',
      method:'POST',
      data:{datime:mylmsgt},
      success:function(data){
          if(data!=5){
            $('#intrmylmsgt').load('intrmylmsgt.php');
            $('#chatlogs').append(data);
            CallThat()
          }
      }
   });
}());

и проверьте функцию CallThat () на наличие пустых, нулевых ответов. если ответ становится пустым или пустым, не вызывайте CallThat () в следующий раз.

...