我有一个聊天应用程序,在这个应用程序中,我想在聊天室中显示在线用户。我有一个记录在线用户的数据库,每当有新用户到来时它就会不断变化。每当用户离开时,它将从数据库中删除。数据库由两列组成:用户名和房间。数据库端工作正常。
onlinelar.php:
<?php
$data = array();
$current = $_GET['current'];
$room = $_GET['room'];
$getRoomUsers = mysql_query("SELECT * FROM `chat_users_rooms` WHERE `room` = '".$room."'");
if(mysql_num_rows($getRoomUsers) != $current)
{
$data['numOfUsers'] = mysql_num_rows($getRoomUsers);
}
else
{
$data['numOfUsers'] = $current;
}
echo json_encode($data);
?>
online.js:
var numOfUsers = 0;
var room;
function chat(room2)
{
room = room2;
}
$.ajaxSetup({
cache: false
});
function getuserlist() {
$.ajax({
type: "GET",
url: "onlinelar.php",
data: {
'room': room,
'current' : numOfUsers
},
dataType: "json",
cache: false,
success: function(data) {
if (numOfUsers != data.numOfUsers) {
numOfUsers = data.numOfUsers;
$('#bu').html($("<strong id='bu'>"+ numOfUsers + "</strong>"));
}
setTimeout(getuserlist(),1);
},
});
}
最后,它在index.html中的初始化器:
----东西
<script type="text/javascript">
var chat = new Chat(<?php echo $room;?>);
chat.getuserlist();
</script>
<strong id="bu">
<?php
echo $numOfUsers;
?>
</strong>
------东西
在这里,我想检查数据库情况(特定房间的行),并同时更改该房间中的聊天数量。 'current'表示用户数,'room'表示房间名称。但即使数据库行数正在变化,也没有变化。我错过了哪一部分? 注意:我在index.php中添加了online.js
答案 0 :(得分:0)
$('#bu').html($("<strong id='bu'>"+ numOfUsers + "</strong>"));
此行在您的旧元素下放置一个新元素,您要做的是通过调用
替换旧元素$('#bu').html(numOfUsers);
同样setTimeout()
需要几毫秒,因此1
的值非常低,您可能希望从1000
开始,然后从那里开始工作。
修改强>
并且setTimeout()
将函数作为参数,因此您需要调用:
setTimeout(getuserlist, 1000);