Advertisement
asimryu

AJAX - XML 읽기

Jan 25th, 2018
249
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 2.18 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.  <meta charset="UTF-8">
  5.  <title>JavaScript</title>
  6. </head>
  7. <body>
  8.  <div>
  9.   <button onclick="getAjaxXML('friends.xml');">친구목록보기</button>
  10.  </div>
  11.  <div id="friend-list"></div>
  12.  <script type="text/javascript">
  13.   function getAjaxXML(xml) {
  14.    var xhr = new XMLHttpRequest(); //XMLHttpRequest 인스턴스 xhr 생성
  15.    xhr.onreadystatechange=function() { //XMLHttpRequest 요청 후 상태 변화가 생기면
  16.     if (xhr.readyState==4 && xhr.status==200) { //요청에 대한 응답이 성공하면
  17.  
  18.     //응답 결과를 XML로 해석하여 friendData에 저장
  19.     var friendData = xhr.responseXML;
  20.  
  21.      //XML에서 <friend>..</friend>를 모두 추출하여 friendList에 배열로 저장  
  22.      var friendList = friendData.getElementsByTagName("friend");
  23.      var table = "<table border='1'><tr><th>이름</th><th>Email</th><th>연락처</th><th>나이</th></tr>";
  24.      for( var i=0; i<friendList.length; i++) {
  25.      var friend = {}; //객체 friend 생성
  26.  
  27.      //name, email, phone, age 등의 객체의 값을 읽어서 객체 friend에 저장
  28.      //friendList[i].getElementsByTagName("name")[0].childNodes[0].nodeValue;
  29.      //위 코드를 함수화 하여 getNodeValue(friendList[i],"name") 형식으로 호출하여 값 반환
  30.      friend.name = getNodeValue(friendList[i],"name");
  31.      friend.email = getNodeValue(friendList[i],"email");
  32.      friend.phone = getNodeValue(friendList[i],"phone");
  33.      friend.age = getNodeValue(friendList[i],"age");
  34.      table += "<tr>";
  35.       table += "<td>" + friend.name + "</td>";
  36.       table += "<td>" + friend.email + "</td>";
  37.       table += "<td>" + friend.phone + "</td>";
  38.       table += "<td>" + friend.age + "</td>";
  39.       table += "</tr>";
  40.      }
  41.      table += "</table>";
  42.      document.getElementById("friend-list").innerHTML = table;
  43.     }
  44.    };
  45.    xhr.open("GET",xml,true); //xml을 GET 방식으로 열도록 준비
  46.    xhr.send(); //요청 전송(성공하면 onreadystatechange의 함수 실행)
  47.   }
  48.  
  49.   function getNodeValue(nodeData,nodeName) {
  50.    return nodeData.getElementsByTagName(nodeName)[0].childNodes[0].nodeValue;
  51.   }
  52.  </script>
  53. </body>
  54. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement