AjaxによるXMLファイルの読込サンプル

2021年11月24日

説明
1.XMLHttpRequest.open(method, url[, async[, user[, password]]])
XMLHttpRequest の open() メソッドは、新しく作成されたリクエストを初期化したり、既存のリクエストを再初期化したりします。
method:使用する HTTP リクエストメソッドです。 “GET", “POST", “PUT", “DELETE", など
url:リクエストを送信する URL を表す DOMString

2.var data = XMLHttpRequest.responseXML;
XMLHttpRequest.responseXML は読み取り専用のプロパティで、リクエストによって受け取った HTML または XML を含む Document、またはリクエストが成功しなかった場合、
まだ送信されていない場合、データが XML または HTML として解釈できない場合は null を返します。

使用例

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
table,th,td {
border : 1px solid black;
border-collapse: collapse;
}
th,td {
padding: 5px;
}
</style>
</head>
<body>
<h1>XMLHttpRequestオブジェクトの取得</h1>
<button type="button" onclick="loadXMLDoc()">テスト</button>
<br><br>
<!--セレクタ名show -->
<table id="show"></table>
<script>
function loadXMLDoc() {
 //XMLHttpRequestオブジェクトの作成
var xhttp = new XMLHttpRequest();
//readyState 属性が変化するたびに呼び出されます
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
testFunc(this);
}
};
//リクエストを送信する URL を表す cd_catalog.xml
xhttp.open("GET", "cd_catalog.xml", true);
xhttp.send();
}
function testFunc(xml) {
var i;
//XMLHttpRequest を用いて受け取った XML
var xmlDoc = xml.responseXML;
var table="<tr><th>作者</th><th>タイトル</th></tr>";
//指定されたタグCDを持つ要素の HTMLCollection を返します
var x = xmlDoc.getElementsByTagName("CD");
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>";
}
/*id="show"にxmlデータを表示*/
document.getElementById("show").innerHTML = table;
}
</script>
</body>
</html>
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <style> table,th,td { border : 1px solid black; border-collapse: collapse; } th,td { padding: 5px; } </style> </head> <body> <h1>XMLHttpRequestオブジェクトの取得</h1> <button type="button" onclick="loadXMLDoc()">テスト</button> <br><br> <!--セレクタ名show --> <table id="show"></table> <script> function loadXMLDoc() {  //XMLHttpRequestオブジェクトの作成 var xhttp = new XMLHttpRequest(); //readyState 属性が変化するたびに呼び出されます xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { testFunc(this); } }; //リクエストを送信する URL を表す cd_catalog.xml xhttp.open("GET", "cd_catalog.xml", true); xhttp.send(); } function testFunc(xml) { var i; //XMLHttpRequest を用いて受け取った XML var xmlDoc = xml.responseXML; var table="<tr><th>作者</th><th>タイトル</th></tr>"; //指定されたタグCDを持つ要素の HTMLCollection を返します var x = xmlDoc.getElementsByTagName("CD"); 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>"; } /*id="show"にxmlデータを表示*/ document.getElementById("show").innerHTML = table; } </script> </body> </html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
table,th,td {
  border : 1px solid black;
  border-collapse: collapse;
}
th,td {
  padding: 5px;
}
</style>
</head>
<body>

<h1>XMLHttpRequestオブジェクトの取得</h1>
<button type="button" onclick="loadXMLDoc()">テスト</button>
<br><br>
<!--セレクタ名show -->
<table id="show"></table>
<script>
function loadXMLDoc() {
 //XMLHttpRequestオブジェクトの作成
  var xhttp = new XMLHttpRequest();
  //readyState 属性が変化するたびに呼び出されます
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      testFunc(this);
    }
  };
   //リクエストを送信する URL を表す cd_catalog.xml
  xhttp.open("GET", "cd_catalog.xml", true);
  xhttp.send();
}
function testFunc(xml) {
  var i;
  //XMLHttpRequest を用いて受け取った XML 
  var xmlDoc = xml.responseXML;
  var table="<tr><th>作者</th><th>タイトル</th></tr>";
  //指定されたタグCDを持つ要素の HTMLCollection を返します
  var x = xmlDoc.getElementsByTagName("CD");
  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>";
  }
      /*id="show"にxmlデータを表示*/
  document.getElementById("show").innerHTML = table;
}
</script>

</body>
</html>

実行結果

「テスト」ボタンを押すと、「cd_catalog.xml」ファイルの項目が表示されます

作者 タイトル
Bob Dylan Empire Burlesque
Bonnie Tyler Hide your heart
Dolly Parton Greatest Hits
Gary Moore Still got the blues

Ajax

Posted by arkgame