仅在特定区域刷新页面

时间:2012-11-19 09:02:21

标签: jquery mysql reload

  

可能重复:
  Javascript auto update page?

好的...所以我正在尝试使用php构建一个消息系统,当有消息进来时,我需要一个小数字>>>消息(0)<<<更改为新的金额而不重新加载整个页面。如果我可以用jquery或其他东西重新加载整个页面会很好,然后只是改变的东西会改变......这就是我真正想要的东西。

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

1 个答案:

答案 0 :(得分:1)

你需要 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