1

可能重复:
Javascript 自动更新页面?

好的...所以我正在尝试使用 php 构建一个消息传递系统,当收到一条消息时,我需要这个小数字 >>>Messages (0)<<< 更改为新的数量,而无需重新加载整个页面。如果我可以用 jquery 或其他东西重新加载整个页面,然后只是改变的东西会改变,那就太好了......这就是我真正想要的。

该数字来自与登录用户相关的数据库中未读消息的数量。在图像中,您可以看到新消息进入时数字显示的位置,但直到页面加载...我需要它来检查至少 2 个不同位置的更改并每 30 秒运行一次查询。 在此处输入图像描述

4

1 回答 1

2

您将需要AJAX,这是一个示例:

首先,当您加载页面时,您需要获取发送的消息的最后一个 ID。

$lastID = SELECT MAX(id) AS `id` FROM `messages` WHERE `to` = . getLoggedUserId()

然后,您需要将其传递给 Ajax:

$(document).ready(function(){
    setInterval(function(){
        $.get("page.php?checkMessages&lastID=<?php echo $lastID; ?>", function(amount){
            if(amount > 0){
                $("span.newMessages").text(amount);
            }
        })
    },10*1000); // every 10 seconds
})

page.php 上,您将拥有:

<?php
    if( isset($_GET["checkMessages"]) ){
        $lastID = (int)$_GET["lastID"]; // just for security
        $newMessages = 'SELECT COUNT(*) AS `amount` FROM `messages` WHERE `id` > ' . $lastID . ' AND `to` = ' . getLoggedUserId()
        echo $newMessages;
        exit;
    }
?>

然后,每 10 秒,只会span加载新消息的数量。

于 2012-11-19T12:02:29.233 回答