Как узнать, получил ли AJAX новые данные? - PullRequest
0 голосов
/ 31 августа 2018

Я создаю чат-сайт. Я использую AJAX для получения сообщений чата каждые 2 секунды. Я также использую scrollTop: для автоматической прокрутки страницы при загрузке данных. Но я не могу понять, как выполнять автоматическую прокрутку только при поступлении нового сообщения не каждые 2 секунды.

$('.contact').click(function() {
$('.cont').not(this).removeClass('active');
$(this).toggleClass('active');
sendRequest();
function sendRequest(){
var convo_id=document.getElementById("convo_id").value;
 $.ajax({
  cache: false,
  type: "POST",
  url: 'show_chat.php',
  data: ({convo_id: convo_id}),
  success: function(response) {
  $('#chatgoeshere').html(response);
  $(".messages").animate({ scrollTop: $(document).height() }, "fast");},
    complete: function() {
   // Schedule the next request when the current one's complete
   setTimeout(sendRequest, 2000); // The interval set to 5 seconds
   }
   });
   };
   });

Спасибо

Ответы [ 3 ]

0 голосов
/ 31 августа 2018

проверьте, не является ли ответ только пустым, затем добавьте функцию прокрутки

if response
{
  $('#chatgoeshere').html(response);
  $(".messages").animate({ scrollTop: $(document).height() }, "fast");},

}
0 голосов
/ 31 августа 2018

Преобразуйте ответ вашего сервера из простого HTML в объект и включите общее количество сообщений в этом чате:

{ html: "yourHtml", messagesCount: yourMessagesCount }

, затем в javascript сравните старый счетчик с полученным счетчиком и, если он равен true, обновите содержимое

if(oldMessages < response.messagesCount)

также обновляет содержимое, только если появляются новые сообщения, иначе вы перерисовываете страницу и тратите ресурсы, если ничего нового не происходит:)

0 голосов
/ 31 августа 2018

в этой строке

success: function(response) {

Вам необходимо проверить ответ. если у вас есть данные, вы можете прокрутить страницу вверх.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...