Повторяющий html при обработке данных

188
14 мая 2018, 18:30

Вот, есть такой javascript код:

  function updateChat(){
    $.ajax({
      url : "http://localhost/kiosl/rooms/default/protected/models/chat-server.php",
      type : "get",
      data : "last_displayed_chat_id="+$('#last_displayed_chat_id').val(),
      dataType : "json",
      success : function(response , status , http){
        $.each(response, function(index,item){
      document.getElementById("kiosl_chat_box").innerHTML += "<li class='friend'>  <div class='friend-msg-wrap'>  <img class='user-img img-circle block pull-left'  src='../dist/img/user.png' alt='user'/>  <div class='msg pull-left'>  <p>" + item.user_comment +"</p>  <div class='msg-per-detail text-right'>  <span class='msg-time txt-grey'>" + item.user_name + "</span>  </div>  </div>  <div class='clearfix'></div>  </div>  </li>";
        });
      },
      error : function(http, status, error){
        alert('Some Error occured : '+error);
      }
    });
  }
 updateChat();
  setInterval(updateChat, 1000);

И вот в чём проблема: каждый раз в kiosl_chat_box за 1 сек. добавляется html код:

<li> Бла Бла бла </li>

Вопрос: как сделать что бы повторяющийся код не добавлялся.

P.S. Мой "опыт" javascript уже поделен на 0.

Answer 1

Проблема в том, что функция .val() вызывает замену всего контента в textarea. То есть, равняется оператору =. В текущем же коде вы используете оператор +=, то есть оператор присвоения, который добавляет контент на страницу к уже существующему контенту. Проще говоря, добавляет контент. Решить эту задачу вы можете сделав так, чтобы PHP отдавал вам только новые сообщения, а не все сразу. Честно говоря, PHP и не очень-то годится для решения такой задачи. Вам нужно гуглить в сторону long-poll запросов и сокетов, либо же переходить на NodeJS.

READ ALSO
Вывод данных из БД с сравнением PHP и MySQL

Вывод данных из БД с сравнением PHP и MySQL

Помогите вывести значения из таблицыперед этим сравнив их

203
foreach возвращает дважды результат

foreach возвращает дважды результат

сообществоНе пойму то ли баг, то ли фича

185
Laravel Выборка записей из БД с пробелом

Laravel Выборка записей из БД с пробелом

В базе хранится запись Мобильные телефоныТак вот, при выборке и подстановке в атрибут value Ларавель оборачивает первое слово в кавычки - "Мобильные",...

167