我在Web应用程序中使用PHP Ajax解决方案进行聊天。聊天看起来很整洁,但是当我进入聊天室时,我遇到了一个大问题。我正在使用setInterval
来获取新消息,但是当间隔每秒运行一次时,页面最终跳到了第一条消息。这种情况每隔一秒钟就会发生一次,从而阻止用户看到最新消息。这是我正在运行的脚本:
<?php
$id = $_GET['id'];
echo
"<script>
function ajax() {
var req = new XMLHttpRequest();
req.onreadystatechange = function () {
if(req.readyState == 4 && req.status==200){
document.getElementById('content').innerHTML = req.responseText;
}
}
req.open('GET', 'process.php?id=$id',true);
req.send();
}
setInterval(function () {
ajax();
}, 1000);
</script>
";
?>
这是我的HTML,其中正在加载内容:
<div class="card bg-sohbet border-0 m-0 p-0" style="height: 100vh;">
<div id="sohbet" class="card border-0 m-0 p-0 position-relative bg-transparent" style="overflow-y: auto; height: 100vh;" onload="ajax();">
<div id="content"></div>
</div>
</div>
我尝试使用setTimeout/clearTimeout
,event.preventDefault()
和return false;
。这些解决方案均无效。如果您能提供帮助,将不胜感激。
请查看此视频链接的示例:https://www.hippovideo.io/video/play/gO83luY-81NfIeSeltBW-Q