我的网站上有一个聊天功能,可以让两个用户互相聊天,我使用JavaScript、AJAX和PHP
目前,它不会自动刷新聊天区,除非我提交回复或刷新页面。我不明白为什么。
JavaScript函数
function checkReply(threadid) {
// XMLHttpRequest
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("chatwrap").innerHTML = xmlhttp.responseText;
setInterval(checkReply(threadid), 10000);
}
}
xmlhttp.open("GET","inc/chatreply.php?chatid="+ threadid,true);
xmlhttp.send();
}
事件处理程序在<div>
上,responseText将以结尾
<div id="chatwrap" onload="checkReply('.$threadid.')"></div>
$threadid
是设置在页面顶部的GET变量:
$threadid = (int)$_GET['chatid'];
更新
看到您已经处于PHP状态,语法是正确的。
问题是div
没有一个onload事件。您必须将它附加到body标记,或者在div的头部或下方包含一个脚本,因为它只会在div渲染后执行
您没有正确地包含PHP变量。此时,您正在将字符串.$threadid.
传递给checkReply
函数。在使用分隔符<?php & ?>
使用此语法之前,您必须再次进入PHP模式。
<div id="chatwrap" onload="checkReply(<?php echo $threadid; ?>)"></div>
这应该效果更好。