如何使用ajax检索xml数据

时间:2017-02-24 10:22:29

标签: javascript xml

我正在尝试使用JavaScript检索存储在XML文件中的数据。但点击按钮后没有响应。点击按钮后没有任何反应。它甚至没有显示任何错误和输出。我无法理解以下代码有什么问题。请帮忙。

<html>
<head>
	<title>Requesting XML data in AJAX Student information</title>
<script language="JavaScript">

function getData()
{
	var xhr;
	
	if (window.XMLHttpRequest)
  	{
		// code for IE7+, Firefox, Chrome, Opera, Safari
  		xhr=new XMLHttpRequest();
		//xhr.overrideMimeType("text/xml");
  	}
	else
 	 {
		// code for IE6, IE5
 		 xhr=new ActiveXObject("Microsoft.XMLHTTP");
  	}
xhr.onreadystatechange=function()
  {
  if (xhr.readyState==4 && xhr.status==200)
    {
   	  var n=xhr.responseXML;
 	  dispData(n);
    }
  }
xhr.open("GET","student.xml",true);
xhr.send();
}

function dispData(xmlDoc)
{
	var a,f1,f2,f3,f4,disp;
	
	
	//using javascript properties
	a=xmlDoc.documentElement;
	f1=a.firstChild;
	f2=f1.nextSibling;
	f3=f2.nextSibling;
	f4=f3.nextSibling;
	
	disp="<b>using javascript properties</b><br>";
	disp=disp+"PRN:"+f1.firstChild.nodeValue+"<br><br>Name of Student:"+f2.firstChild.nodeValue +"<br><br>Lives in :"+f3.firstChild.nodeValue+"<br><br>Contact Details:"+f4.firstChild.nodeValue;
	
	//accessing XML elements by name

	var t=xmlDoc.getElementsByTagName("stname");
	var f=xmlDoc.getElementsByTagName("mobile");
	disp=disp +"<br><br><b>Accessing XML elements by name</b><br>Student Name: " +t[0].firstChild.nodeValue+ " <br><br>Call: "+f[0].firstChild.nodeValue;
	
	
	 document.getElementById('div1').innerHTML=disp;
	
}
</script>
</head>
<body>
<h1 style="background-color:black;color:white">Handling XML in AJAX Application</h1>
<button onClick="getData()">Get the Student Information</button>
<br><br><br>
<div id="div1">
text goes here...........................
</div>
</body>
</html>

<!-- begin snippet: js hide: false console: true babel: false -->
xml file
 student.xml
<?xml version="1.0" encoding="UTF-8"?>
<student1>
   <prn>121</prn>
   <stname>Vijay Sharma</stname>
   <city>Chiplun</city>
   <mobile>94232942090</mobile>
</student1>

我更改了我的XML文件。它正在使用以下代码行

    var t=xmlDoc.getElementsByTagName("stname");
    var f=xmlDoc.getElementsByTagName("mobile");
    disp=disp +"<br><br><b>Accessing XML elements by name</b><br>Student Name: " +t[0].firstChild.nodeValue+ " <br><br>Call: "+f[0].firstChild.nodeValue;

但是我发现以下代码行出错了

a=xmlDoc.documentElement;
    f1=a.firstChild;
    f2=f1.nextSibling;
    f3=f2.nextSibling;
    f4=f3.nextSibling;

    disp="<b>using javascript properties</b><br>";
    disp=disp+"PRN:"+f1.firstChild.nodeValue+"<br><br>Name of Student:"+f2.firstChild.nodeValue +"<br><br>Lives in :"+f3.firstChild.nodeValue+"<br><br>Contact Details:"+f4.firstChild.nodeValue;

它会产生错误 未捕获的TypeError:无法读取null的属性'nodeValue'

以下代码行

disp=disp+"PRN:"+f1.firstChild.nodeValue+"<br><br>Name of Student:"+f2.firstChild.nodeValue +"<br><br>Lives in :"+f3.firstChild.nodeValue+"<br><br>Contact Details:"+f4.firstChild.nodeValue;

因此脚本不适用于nodeValue属性。 nodeValue属性是否已弃用?如果是这样,那么我可以使用而不是nodeValue。 请帮忙。

0 个答案:

没有答案