您好我已经完成了Long轮询,websockets和APE,Ajax推送,Ajax Pull。由于现在万维网上还没有引入websockets技术。我以为我会使用普通的setInterval函数来检查数据库。这是一个聊天应用程序,我的代码: -
Home.php 上的: 的Javascript :
$(document).ready(function(){
setInterval(function(){
var id = $id; // this is the id of the last message inserted in the database
var data = 'id='+id;
$.ajax({
type : "POST",
url : "check.php",
data : data,
success : function(data){
if(data)
{
$(".comments").append(data);
}
}
});
},1000);
和 check.php php code :
$id = $_POST['id'];
$get = mysql_query("SELECT * FROM messages WHERE id>'$id' ORDER BY id DESC");
$num2 = mysql_num_rows($get);
$get2 = mysql_fetch_assoc($get);
$id = $get2['id'];
if($num2!=0)
{
$username = $get2['username'];
$a = mysql_query("SELECT * FROM people WHERE username='$username'");
$n = mysql_num_rows($a);
$b = mysql_fetch_assoc($a);
$file = $b['filename'];
$pic = "<img src=\"images/" .$file. "\" width=\"40\" height=\"40\">";
$name = $get2['fullname'];
$message = $get2['message'];
echo $pic.$message."<br/>";
}
else
{
}
如果在数据库中插入了新记录,则它正确地回显,但它不会更新home.php页面中的$ id,因此它会一次又一次地发送旧ID,并且会一次又一次地附加注释。 / p>
我想要的是什么。每个间隔。应该更新home.php的$ id,以便它只将当前的消息id发送到check.php页面。
答案 0 :(得分:0)
我猜您发布的第一个代码位于 home.php 的模板中,而 $ id 则会替换为最后一个ID的实际数字
这是第一次使用PHP处理页面时,但是一旦在用户计算机上下载,您只需要依赖JavaScript ... 我不确定您从check.php接收数据的形式,但您需要执行类似
的操作id = data.id
data = 'id='+id;