我有一个简单的网站ProjectX2,用户可以在其中互相发送消息。
我有一个PHP函数,其中包含用户每隔20秒“刷新”一次的新消息数。它从数据库中获取信息。
当我调用此函数时,它只有来自页面加载的新消息数 - 它每次调用时都不会自动更新。我是这样用JavaScript调用的:
function pum() {
document.getElementById("usermessages").innerHTML = "<?php echo pum() ?>";
}
window.setInterval(pum,20000);
例如,如果我在访问开始时有5封新邮件,除非我重新加载网页,否则不会更改。
我尝试过使用无限循环:
while(true) {
pum();
sleep(20000);
}
但此方法不允许页面在后台加载。
所以,我的问题是,我如何只是刷新功能?是否有类似于sleep()
的方法,页面可以在后台加载?
答案 0 :(得分:3)
PHP不是客户端运行的。它是在向最终用户提供之前生成的。因此,当您加载页面时,您将看到如下所示的块:
function pum() {
document.getElementById("usermessages").innerHTML = "5";
}
注意 5 是如何静态存在的。无论你多少次调用这个函数,它只会返回5,因为页面上的PHP已经执行并且脚本已关闭。它将包含页面加载时包含的任何值pum()
。
您需要创建一个新文件,将其命名为pum.php,该文件只包含echo pum();
并关闭。然后,您可以使用AJAX请求此文件并将其附加到您的元素。
答案 1 :(得分:2)
您应该在setInterval()
内使用AJAX。