当我尝试使用此XMLHttpRequest对象加​​载此xml文件时,没有任何反应

时间:2012-12-14 10:47:29

标签: javascript xml

我很抱歉这个问题,但我是第一次这样做

这是我的loadxml.js文件,用于加载xml文件

 function loadXMLDoc(dname)
 {
 if (window.XMLHttpRequest)
   {
   xhttp=new XMLHttpRequest();
   }
 else
   {
   xhttp=new ActiveXObject("Microsoft.XMLHTTP");
   }

 xhttp.onreadystatechange=function()
  {
  if (xhttp.readyState==4 && xmlhttp.status==200)
    {
    return xhttp.responseXML;
    }
  }

xhttp.open("GET",dname, true);

xhttp.send();


 } 

现在这里是我的html文件whre使用javascript我尝试提取节点

<!DOCTYPE html>

<html>

<head>

<script src="loadxmldoc.js">
</script>

</head>

<body>

<script>


xmlDoc=loadXMLDoc("books.xml");



document.write(xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue + "<br>");

document.write(xmlDoc.getElementsByTagName("author")[0].childNodes[0].nodeValue + "<br>");

document.write(xmlDoc.getElementsByTagName("year")[0].childNodes[0].nodeValue);
</script>

</body>

</html>

这是xml文件

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore> 
 <book category="cooking">
   <title lang="en">Everyday Italian</title> 
   <author>Giada De Laurentiis</author> 
   <year>2005</year> <price>30.00</price> 
 </book> -
 <book category="children"> 
   <title lang="en">Harry Potter</title> 
   <author>J K. Rowling</author> 
   <year>2005</year> 
   <price>29.99</price> 
 </book> 
 <book category="web"> 
   <title lang="en">XQuery Kick Start</title> 
   <author>James McGovern</author> 
   <author>Per Bothner</author> 
   <author>Kurt Cagle</author> 
   <author>James Linn</author> 
   <author>Vaidyanathan Nagarajan</author> 
   <year>2003</year> 
   <price>49.99</price> 
 </book> 
 <book category="web" cover="paperback"> 
  <title lang="en">Learning XML</title>
  <author>Erik T. Ray</author> 
  <year>2003</year> 
  <price>39.95</price> 
 </book> 
</bookstore>

2 个答案:

答案 0 :(得分:0)

您正在执行异步请求。附加处理程序或使其同步以进行调试。

xhttp.open("GET",dname,false);

或者更好地使用处理程序:

xhttp.open("GET",dname,true);
xhttp.onreadystatechange = function(){
    if(xhttp.readyState == 4){
        if(xhttp.status == 200)
            console.log(req.responseText);
         else
            console.log('Error getting data') ;
    }
}
xhttp.send(null);
return xhttp.responseXML;

答案 1 :(得分:0)

我建议您使用jQuery,因为它将为您完成大部分工作。

$.ajax({
  url: 'ajax/test.html',
  success: function(data) {
    $('.result').html(data);
    alert('Load was performed.');
  }
});