我收到错误“TypeError:xml.getElementsByTagName不是函数”
错误在于“var xmlDoc = new DOMParser()。parseFromString(xml,'text / xml');”
我该如何解决这个问题? 我一直在努力工作几个小时但仍然没有结果
<!DOCTYPE html>
<html>
<meta charset="UTF-8">
<body>
<p id="demo"></p>
<script>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
myFunction(xhttp);
}
}
xhttp.open("GET", "http://LEMONPIE-PC/erdas-iws/ogc/wms/?service=WMS&request=getcapabilities", true);
xhttp.send();
function myFunction(xml) {
var xmlDoc = new DOMParser().parseFromString(xml,'text/xml');
console.log(xmlDoc);
document.write("<table border='1'>");
var x=xmlDoc.getElementsByTagName("Layer");
for (i=0;i<x.length;i++)
{
document.write("<tr><td>");
document.write(x[i].getElementsByTagName("Layer")[0].childNodes[0].nodeValue);
document.write("</td><td>");
document.write(x[i].getElementsByTagName("Style")[0].childNodes[0].nodeValue);
document.write("</td></tr>");
}
document.write("</table>");
}
</script>
</body>
</html>
答案 0 :(得分:2)
myFunction(xhttp); <-- Look at what you are passing to the method
您正在传入XMLHttpRequest对象并将其视为文本,但情况并非如此。您需要引用XMLHttpRequest对象所持有的responseText。
myFunction(xhttp.responseText);
或者如果您正在获取XML,我不知道为什么您要再次解析它,因为XMLHttpRequest对象将为您执行此操作。只要它是一个有效的XML文档,它就应该与responseXML一起使用。
myFunction(xhttp.responseXML);