如何不停止脚本等待?

时间:2013-10-26 20:58:52

标签: javascript php

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

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

当我调用此函数时,它只有来自页面加载的新消息数 - 它每次调用时都不会自动更新。我是这样用JavaScript调用的:

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

例如,如果我在访问开始时有5封新邮件,除非我重新加载网页,否则不会更改。

我尝试过使用无限循环:

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

但此方法不允许页面在后台加载。

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

2 个答案:

答案 0 :(得分:3)

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

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

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

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

答案 1 :(得分:2)

您应该在setInterval()内使用AJAX。