没有页面刷新的Ajax实时用户状态更改

时间:2014-03-12 04:48:11

标签: php ajax

当用户登录/退出时,我有一个绿色/红色的div

使用这个PHP代码:

$results = mysql_query("SELECT * FROM `users` WHERE user_id='".$user_id."' LIMIT 1");
if(mysql_num_rows($results ) > 0){
    while($row = mysql_fetch_assoc($results)){                      
      if($row['status'] === "1"){                       
        $status = 'online';                     
      }else{
         $status = 'offline';                   
      }
   }
}

<div class="'. $status .'">username</div>

如何更改$ status而无需刷新页面以查看更改? 因此,如果我在网站上有100位访客并且有一位用户登录,那么所有100位访客都会看到立即登录的用户旁边的绿色

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

您如何显示来宾名单?将id attribute提交给username divs。然后使用long pollingajax at regular interval(比如每1秒)查看谁在线。在ajax success function中,您可以通过jquery或本机javascript按div获取颜色来编辑Id

使用jquery的ajax示例代码,每1秒

function test()
{
$.ajax({
url:url,
data:{postingData:dt},
success:function(response) {
},
error: function (response) {
}
})
}
setInterval('test()',1000);

在phpyou中,您需要搜索您的用户表以选择在线用户,并且可以发送所有已登录用户的json数组。 然后你将在jquery成功函数中,需要处理这个json数组并改变登录用户的颜色。