好的,我已经创建了一个有效的javascript ajax文件,但它会产生一些荒谬的dom异常。我不确定为什么会这样,因为从我所看到的,我所称的所有元素目前仍然存在。 代码在这里:
window.onload = function(){init();}
function init() {
ajax = ajaxInit();
setInterval(function(){ajaxContact(ajax);},2000);
ajaxContact(ajax);
ajax.onreadystatechange = function() {update(ajax);}
}
function ajaxInit() {
if (window.XMLHttpRequest) {
ajax = new XMLHttpRequest();
}
else {
if (window.ActiveXObject) {
ajax = new ActiveXObject("Microsoft.XMLHTTP");
}
}
if (ajax) {
document.getElementById("status").innerHTML = "AJAX initialized";
return ajax;
}
else {
docuement.getElementById("status").innerHTML = "Error: AJAX not available";
return false;
}
}
function ajaxContact(ajax) {
try {
ajax.open("GET","updateAjax.php?" + "ran=" + Math.random(),true);
ajax.send();
}
catch (err) {
alert(err.message);
document.getElementById("status").innerHTML = "Error contacting server";
document.getElementById("loading").src = "images/redx.png";
}
}
function update(ajax) {
if (ajax.readyState==4 && ajax.status==200){
dataObj = eval('(' + ajax.responseText + ')');
document.getElementById("status").innerHTML = dataObj.status;
document.getElementById("frameNumber").innerHTML =
"Frame:" + dataObj.firstFrame + "/" + dataObj.lastFrame;
document.getElementById("thumbnail").src = dataObj.imgSrc;
}
if (ajax.status==404) {
document.getElementById("status").innerHTML = "Ajax updater not found";
document.getElementById("loading").src = "images/redx.png";
}
}
答案 0 :(得分:1)
<击>
您可能正在尝试调用open并发送ajax
,但如果请求在setInterval
每次调用之间的两秒内没有完成,则会引发错误。您需要在每次调用时检查ajax
对象是否已经发送或准备好打开(检查ajax.readyState
)。
击>
在Chrome中,该行
if (ajax.status==404) {
通过访问ajax.readyState
HEADERS_RECEIVED
(2),LOADING
(3),DONE
(4)之前的状态来导致错误。尝试制作
if (ajax.readyState == 4 && ajax.status==404) {
在访问状态之前确保对象已就绪。