alertfrancis Ответов: 1

Как обновить чат пользователей для новых сообщений insert row из БД в jQuery ajax без обновления страницы


Я работаю над проектом, так как пытаюсь проверить новые вставленные сообщения в БД для каждого пользователя и Эхо,что когда пользователь общается с другим без обновления страницы, чтобы увидеть новое сообщение, но я пытаюсь использовать setInterval, но проблема в том, что как только пользователь войдет в систему, все сообщения будут отображаться в течение 3 секунд и исчезнут из чата.
я использовал .html (), но когда я использую .append (), он добавляет одни и те же сообщения каждые 3 секунды, пожалуйста, мне нужна помощь в том, как решить эту проблему, я хочу, чтобы он работал как чат facebook.

Что я уже пробовал:

это мой jQuery ajax запрос и код обратной связи

setInterval(function(){
	var id = $(".id").val();
	  //alert(id);
	  $.ajax({
  type:'get',
   url:"msg.php",
   data:{id:id},
   success: function(data){
   $("#msgnot").append(data);
   // $("#msgnot").html(data);
   }

});
    },3000);


msg.php


<?php 
   session_start();
   include 'db.php';
   
   if(isset($_GET["id"])){
     $ids = $_GET["id"];
	    $sql = "select * from answers where userid='$ids' and msgstatus='0'";
       $query = mysqli_query($con,$sql);
       while($rows = mysqli_fetch_assoc($query)){
	 
	  ?>
	  <div id="reply"><a href="read.php?id=<?php echo $rows["id"]; ?>"><?php echo "message from ".$rows["replyid"]; ?>
	  <div id="m_active">
	  <?php
         if($rows["msgstatus"] == "0"){
		       echo "">"."1"."<br>";
		 }else{
		 }
		} 
		 }
	  ?></a></div></div>

SrikantSahu

Вы приносите все сообщения, отправленные пользователю в каждом вызове ajax.. или это только последнее сообщение?

alertfrancis

все сообщения

1 Ответов

Рейтинг:
1

SrikantSahu

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

success: function(data){
   if(data != $("#msgnot").text()){
      $("#msgnot").append(data);
    }
   }