2012-01-18 79 views
1

我有一个网站运行php与mySQL数据库。对于每个访问我访问该站点的访问者,我都会在单独的表格中记录用户会话(从过去的5分钟)。动态计数器,更改没有页面重新加载

如何在页面上制作一个动态计数器,可以在不重新加载页面的情况下更改活动会话的数量,例如,如果我在网站上,并且有15个其他人进入柜台,则会自动更改而无需重新加载页面。

回答

1

在非常基本的情况下,您可以通过AJAX轮询服务器脚本。这PHP脚本将通过类似的在线用户数量,这些用户名等一些所需的信息,以便例如JavaScript部分:

// Poll the server each 60 seconds 
window.setInterval(function() { 
    $.getJSON('/online_users.php', function(data) { 
     // Here the data JSON returned by a PHP script 
     // e.g. data.count - count of sessions online 
     // data.users - could be array of user objects, etc 
     $('#counter').text(data.count); // Update some DOM element with new number 
    }); 
}, 60000); 

而服务器端online_users.php

<?php 

// connect to DB, perform all necessary operations 
// output needed info in JSON format 

$users = array(
    array('username' => 'Tomas', 'id' => 234), 
    array('username' => 'Jassy', 'id' => 42) 
); 
$count = count($users); 

header('Content-type: application/json'); 
die(json_encode(array(
    'count' => $count, 
    'users' => $users 
))); 
+0

非常感谢。我用你提供的代码尝试过,但没有输出。我必须仔细观察一下。只是一个问题..我不需要'回声'计数,因为它能够显示?谢谢 – 2012-01-18 21:50:09

+0

我提供的代码工作得很好。再仔细看看。当然,你需要你的PHP脚本输出一些回应。 'echo','die','print'等。如果你只需要一个数字,你可以简单地改成'echo 25;'或'die(25)'。 – dfsq 2012-01-19 06:46:51

+0

您也可以将间隔时间改为小于1分钟,也许这就是您没有输出的原因,因为1分钟必须先通过。 – dfsq 2012-01-19 06:48:41

相关问题