无法处理来自小型聊天模块的ajax请求

我正在为我的客户端开发一个简单的聊天模块,但无法处理来自setInterval()循环

这是我发送请求以从数据库获取数据的js代码

 function getData(){ jQuery.ajax({ url: '../../get_data.php', data: 'to=', cache: false, success: function(data){ jQuery('
'+data+'
').appendTo("#ch-data-con"); setInterval("getData()", 5000); } }); }

这是get_data.php文件,它根据请求生成数据

 require "../../support/connection/connect_gib.php"; $to = addslashes(trim($_REQUEST['to'])); $query = "select * from chat where guest_id='".mysql_real_escape_string($to)."' order by id asc"; $result = mysql_query($query); while( $row = mysql_fetch_assoc($result) ){ echo "".$row['frm']." :  " .$row['message'] . "
"; }

我得到了循环结果,就像所有数据一次又一次重复,但我想要新更新的数据,请让我纠正我做错了..

您正在jQuery中使用appendTo函数。因此所有聊天消息都将在旧列表后附加。 您可以使用.html()函数替换完整数据。

另一种方法是从php端获取最后一条聊天消息,因此不会重复所有数据。 您可以使用自动ID指出最后提取的消息。

您应该保留最后提取的ID并将其用于新请求。 在服务器端,你应该从那里取。

 $id= addslashes(trim($_REQUEST['id'])); $query = "select * from chat where guest_id='".mysql_real_escape_string($to)."' AND id > '".mysql_real_escape_string($id)."' order by id asc"; 

function getData(){

 jQuery.ajax({ url: '../../get_data.php', data: 'to=&id=' + last_id_fecthed, cache: false, success: function(data){ jQuery('
'+data+'
').appendTo("#ch-data-con"); setInterval("getData()", 5000); } });

}