0

我有一个简单的网站ProjectX2,用户可以在其中互相发送消息。

我有一个 PHP 函数,其中包含用户想要每 20 秒“刷新”一次的新消息的数量。它从数据库中获取信息。

当我调用这个函数时,它只有来自页面加载的新消息的数量——它不会在我每次调用它时自行更新。我像这样从 JavaScript 调用它:

        function pum() {
            document.getElementById("usermessages").innerHTML = "<?php echo pum() ?>";
        }
        window.setInterval(pum,20000);

例如,如果我在访问开始时有 5 条新消息,除非我重新加载网页,否则它不会改变。

我尝试过使用无限循环:

while(true) {
    pum();
    sleep(20000);
}

但是这种方法不会让页面在后台加载。

所以,我的问题是,我该如何刷新功能?是否有类似于sleep()页面可以在后台加载的方法?

4

2 回答 2

3

PHP 不在客户端运行。它是在提供给最终用户之前生成的。因此,当您加载页面时,您将拥有一个如下所示的块:

function pum() {
    document.getElementById("usermessages").innerHTML = "5";
}

注意5是如何静态地在那里的。无论你调用多少次这个函数,它只会返回 5,因为页面上的 PHP 已经执行并且脚本已经关闭。它将包含pum()页面加载时包含的任何值。

您需要创建一个新文件,将其命名为 pum.php,它只包含echo pum();并关闭。然后,您可以使用 AJAX 请求此文件并将其附加到您的元素。

于 2013-10-26T21:10:46.193 回答
2

您应该在setInterval().

于 2013-10-26T21:03:25.763 回答