presentation.htm
:
if(!system.ie) {
try {
DescXMLDocument = new XMLHttpRequest();
DescXMLDocument.async = false;
DescXMLDocument.onreadystatechange=checkDescXMLload;
DescXMLDocument.open("get", "description.xml", true);
DescXMLDocument.send(null);
}
}
tacore.js
:
if (DescXMLDocument.readyState == 4 && DescXMLDocument.status == 200) {
alert("Error");
} else {
document.getElementById('progressCount').innerHTML="��������o";
document.getElementById('progressDiv').style.display="none";
anodes=DescXMLDocument.responseXML.documentElement.childNodes;
document.getElementById('zback').innerHTML = anodes[0].text;
document.getElementById('coursepicture').innerHTML = anodes[1].text;
document.getElementById('chaptername').innerHTML = anodes[2].text;
document.getElementById('buttonsdiv').innerHTML = anodes[3].text;
document.getElementById('generaldescription').innerHTML = anodes[4].text;
document.getElementById('generalhelp').innerHTML = anodes[5].text;
document.title=document.getElementById('chaptername').innerText;
}
我得到以下错误:
DescXMLDocument.responseXML为null
有谁知道如何修复它?
答案 0 :(得分:1)
您的'checkDescXMLload'是向后的。你的xml将在readyState === 4和status === 200时到达,而不是相反。 如上所述,您将尝试在readyState 1,2和3上读取xml,当它尚未到达时。 只需切换if else并在其他位置移动错误警报。
checkDescXMLload = function() {
if (DescXMLDocument.readyState === 4) {
if (DescXMLDocument.status === 200) {
...... /* your response handler */
anodes = DescXMLDocument.responseXML.documentElement.childNodes;
...... /* your response handler */
}
else {
alert('error');
}
}
}
正如Anik所说,只有当你达到状态4和状态200时,你的xml才会准备好阅读。
如果你想在即兴状态0,1,2和3上做一些事情,你确实可以使用'switch case'。 如果你不想对其他的readystate做任何事情,你可以使用DescXMLDocument.onload()而不是DescXMLDocument.onreadystatechange,它可以在(几乎?)所有现代浏览器中使用。