无法处理来自小型聊天模块的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); } });
}