AJAX XML 应用程序
内容摘要
本章演示使用 XML、HTTP、DOM 以及 JavaScript 的 HTML 应用程序。
文章正文
本章演示使用 XML、HTTP、DOM 以及 JavaScript 的 HTML 应用程序。
使用的 XML 文档
在本章中,我们将使用名为 "music_list.xml" 的 XML 文件。
在 HTML 表格中显示 XML 数据
本例遍历每个 <TRACK> 元素,然后在 HTML 表格中显示 <ARTIST> 和 <TITLE> 元素的值:
实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <html> <body> <table id= "demo" ></table> <script> function loadXMLDoc() { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function () { if ( this .readyState == 4 && this .status == 200) { myFunction( this ); } }; xmlhttp.open( "GET" , "music_list.xml" , true ); xmlhttp.send(); } function myFunction(xml) { var i; var xmlDoc = xml.responseXML; var table= "<tr><th>艺术家</th><th>曲目</th></tr>" ; var x = xmlDoc.getElementsByTagName( "TRACK" ); for (i = 0; i <x.length; i++) { table += "<tr><td>" + x[i].getElementsByTagName( "ARTIST" )[0].childNodes[0].nodeValue + "</td><td>" + x[i].getElementsByTagName( "TITLE" )[0].childNodes[0].nodeValue + "</td></tr>" ; } document.getElementById( "demo" ).innerHTML = table; } </script> </body> </html> |
在 HTML div 元素中显示第一首曲子
本例使用一个函数在 id="displayMUSIC" 的 HTML 元素中显示第一首歌曲:
实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | displayMUSIC(0); function displayMUSIC(i) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function () { if ( this .readyState == 4 && this .status == 200) { myFunction( this , i); } }; xmlhttp.open( "GET" , "music_list.xml" , true ); xmlhttp.send(); } function myFunction(xml, i) { var xmlDoc = xml.responseXML; x = xmlDoc.getElementsByTagName( "TRACK" ); document.getElementById( "showMUSIC" ).innerHTML = "<ul>" + "<li>曲目:" + x[i].getElementsByTagName( "TITLE" )[0].childNodes[0].nodeValue + "</li>" + "<li>艺术家:" + x[i].getElementsByTagName( "ARTIST" )[0].childNodes[0].nodeValue + "</li>" + "<li>专辑:" + x[i].getElementsByTagName( "ALBUM" )[0].childNodes[0].nodeValue + "</li>" + "<li>国家:" + x[i].getElementsByTagName( "COUNTRY" )[0].childNodes[0].nodeValue + "</li>" + "<li>公司:" + x[i].getElementsByTagName( "COMPANY" )[0].childNodes[0].nodeValue + "</li>" + "<li>年份:" + x[i].getElementsByTagName( "YEAR" )[0].childNodes[0].nodeValue + "</li>" + "</ul>" ; } |
在曲目之间导航
如需在上例中的曲目间导航,请添加 next() 和 previous() 函数:
实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | function next() { // 显示下一首歌曲,除非已到达最后一首 if (i < x.length-1) { i++; displayMUSIC(i); } } function previous() { // 显示上一首歌曲,除非已到达第一首 if (i > 0) { i--; displayMUSIC(i); } } |
在点击歌曲时显示专辑信息
最后这个例子演示当用户点击某一首歌曲时如何显示专辑信息:
实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | function displayMUSIC(i) { document.getElementById( "showMUSIC" ).innerHTML = "<ul>" + "<li>曲目:" + x[i].getElementsByTagName( "TITLE" )[0].childNodes[0].nodeValue + "</li>" + "<li>艺术家:" + x[i].getElementsByTagName( "ARTIST" )[0].childNodes[0].nodeValue + "</li>" + "<li>专辑:" + x[i].getElementsByTagName( "ALBUM" )[0].childNodes[0].nodeValue + "</li>" + "<li>国家:" + x[i].getElementsByTagName( "COUNTRY" )[0].childNodes[0].nodeValue + "</li>" + "<li>公司:" + x[i].getElementsByTagName( "COMPANY" )[0].childNodes[0].nodeValue + "</li>" + "<li>年份:" + x[i].getElementsByTagName( "YEAR" )[0].childNodes[0].nodeValue + "</li>" + "</ul>" ; } |
代码注释