我正在发送聊天消息,特别是div接收它们。所有用ajax读写。在Chrome中一切正常,但在Firefox中,它没有显示......
这是我的代码: -
var xmlhttp = false;
function read_message() {
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("chatBox").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET",'http://<?php echo $domain; ?>/m.php?id='+<?php echo $id; ?>,true);
xmlhttp.setRequestHeader("Content-type","text/html");
xmlhttp.send();
}
$(document).ready(function(){
setInterval("read_message()", 800);
});
$ domain在Header页面中定义,它是同一个域,其中文件正在运行...即
如果我的聊天页面在localhost中,则$ domain也是localhost ..
我知道ajax的原始政策相同,但由于使用http://
,是这个问题。
我不能离开http://
部分,因为我正在使用网址重写,而我的网址就像http://localhost/chat/user/anonymous
,所以,如果我只使用m.php?id=1
而不是尝试从网页获取网页
http://localhost/chat/user/m.php
显然不存在......它存在于http://localhost/m.php
如果上面提到的点是错误的,有什么方法可以解决它,或者任何其他更好的帮助都会很棒。
由于
答案 0 :(得分:1)
当您触发两个请求时,如果第二个请求在第一个请求解析之前触发,xmlhttp.responseText
侦听器中的onreadystatechange
将指向第二个(未解析的)请求的responseText
第一个请求的监听器触发。这是因为您只使用为所有请求共享的单个全局xmlhttp
变量。
如果您在var xmlhttp
内定义read_message
,而不是在xmlhttp
之外,那么每个新的函数调用都将拥有自己的私有function read_message() {
var xmlhttp;
//...
}
变量:< / p>
{{1}}