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