这有点奇怪。我在不同的电脑上运行这个脚本,得到了不同的结果。 在一台计算机中,此代码可以正常工作,但在另一台计算机中无效。这是我的js代码:为什么XMLHttpRequest返回null?
xmlDoc = loadXmlDoc();
printSubClassOf();
function loadXmlDoc(){
var xmlDom = null;
var xhttp = new XMLHttpRequest();
xhttp.open("GET", "resto.owl", false);
xhttp.send(null);
xmlDom = xhttp.responseXML;
return xmlDom;
}
function printSubClassOf(){
a = xmlDoc.getElementsByTagName("SubClassOf");
for(i = 0; i < a.length; i++){
b = xmlDoc.getElementsByTagName("SubClassOf")[i].childNodes;
for(j = 0; j < b.length; j++){
c = xmlDoc.getElementsByTagName("SubClassOf")[i].childNodes[j];
document.write(i + " " + j + " " + c.nodeName + "<br>");
}
}
}
这是我试图解析的XML。
<Ontology>
<SubClassOf>
<Class IRI="#Chef"/>
<Class IRI="#Employee"/>
</SubClassOf>
<SubClassOf>
<Class IRI="#Customer"/>
<Class IRI="#People"/>
</SubClassOf>
</Ontology>
我使用了Chrome开发人员工具来查看发生了什么事情。有200个状态代码的XHR请求,但仍然有这个错误。
a = xmlDoc.getElementsByTagName("SubClassOf");
Uncaught TypeError: Cannot call method 'getElementsByTagName' of null
我觉得printSubClassOf()
结束loadXmlDoc()
返回XML之前。你怎么看?以及如何解决这个问题?仅供参考:我在本地主机上运行这个。
@bfavaretto我刚刚编辑了我的问题,谢谢你的澄清。 – shankshera
我试过了你发布的代码,它工作。你正在尝试完全相同的代码,还是不同的东西? – bfavaretto