웹 서버와 비동기적으로 데이터를 교환하고 조작하기 위한 XML, XMLHttpRequest 객체를 사용하여 통신하지만 꼭 XML을 사용하여 통신하진 않고 JSON을 더 많이 사용한다.
XML을 이용한 비동기 통신
<?xml version="1.0" encoding="UTF-8"?> <member xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.org/responseXML responseXML.xsd" xmlns="http://www.example.org/responseXML"> <student> <stdNumber>1001</stdNumber> <stdName>홍길동</stdName> <score>95</score> </student> <student> <stdNumber>1002</stdNumber> <stdName>김길동</stdName> <score>90</score> </student> <student> <stdNumber>1003</stdNumber> <stdName>박길동</stdName> <score>80</score> </student> </member>
미리 작성된 XML 파일을 이용하여 데이터를 파싱해 올 것이다.
XMLHttpRequest 객체를 생성하여 자바스크립트로 비동기 통신
var arr = new Array(); var xhr = null; function startRequest(){ // alert("Ok!"); // 객체 XMLHttpRequest -> 웹브라우저 // XMLHttpRequest 객체 생성 if (window.XMLHttpRequest) { xhr = new XMLHttpRequest; } else { xhr = ActiveXObject("Microsoft.XMLHTTP"); } arr.push(xhr); // XMLHttpRequest 객체를 통한 GET방식 요청 xhr.open("GET","responseXML.xml", true); xhr.send(); xhr.onreadystatechange = resultProcess; } // 가져온 XML 데이터를 각각의 div태그와 span태그에 알맞게 넣는다. function resultProcess(){ if (xhr.readyState==4 && xhr.status==200) { arr.push(xhr.responseXML); alert(arr.join("\n")); var xmlDoc = xhr.responseXML; var studentList = xmlDoc.getElementsByTagName("student"); for (var i=0; i<studentList.length; i++) { var student = studentList[i]; var subElement = student.childNodes; var disp = document.getElementById("disp"); var div = document.createElement("div"); for (var j=0; j<subElement.length; j++) { if (subElement[j].nodeType == 1) { var span = document.createElement("span"); span.innerHTML = subElement[j].childNodes[0].nodeValue + " "; div.appendChild(span); } } disp.appendChild(div); } } }
XML에서 파싱해온 데이터를 HTML 태그에 알맞게 집어 넣어봤다.
XML 데이터를 파싱하기 전 HTML, id가 disp인 div태그 안에 파싱해온 데이터를 넣는다.
<!-- html 화면 --> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script type="text/javascript" src="responseXML.js"></script> </head> <body> <h3>응답내용</h3> <form> <input type="button" id="sndRet" value="정보요청" onclick="startRequest()"/> </form> <div id="disp"></div> </body> </html>
파싱하고 난 후
<!DOCTYPE html> <!-- saved from url=(0058)http://localhost:8080/javascript/AJAX/XML/responseXML.html --> <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <script type="text/javascript" src="./Insert title here_files/responseXML.js.다운로드"></script> </head> <body> <h3>응답내용</h3> <form> <input type="button" id="sndRet" value="정보요청" onclick="startRequest()"> </form> <div id="disp"> <div> <span>1001 </span> <span>홍길동 </span> <span>95 </span> </div> <div> <span>1002 </span> <span>김길동 </span> <span>90 </span> </div> <div> <span>1003 </span> <span>박길동 </span> <span>80 </span> </div> </div> </body> </html>
'WEB > JavaScript' 카테고리의 다른 글
AJAX 예제1) (0) | 2020.07.17 |
---|