PHP와 AJAX XML 예제

AJAX는 XML 파일과 상호작용할 수 있습니다。

AJAX XML 예제

아래의 AJAX 예제에서, 웹 페이지가 AJAX 기술을 사용하여 XML 파일에서 정보를 읽는 방법을 보여드리겠습니다。

아래의 목록에서 하나의 CD를 선택하세요

CD 정보를 여기에 나열합니다。

이 예제는 세 개의 페이지를 포함하고 있습니다:

  • 간단한 HTML 양식
  • XML 파일
  • JavaScript 파일
  • PHP 페이지

HTML 양식

위의 예제는 간단한 HTML 양식과 JavaScript로의 링크를 포함하고 있습니다:

<html>
<head>
<script src="selectcd.js"></script>
</head>
<body>
<form> 
CD 선택:
<select name="cds" onchange="showCD(this.value)">
<option value="Bob Dylan">Bob Dylan</option>
<option value="Bee Gees">Bee Gees</option>
<option value="Cat Stevens">Cat Stevens</option>
</select>
</form>
<p>
<div id="txtHint"><b>CD 정보가 여기에 나타날 것입니다.</b></div>
</p>
</body>
</html>

예제 설명:

처음 보면, 이는 단순한 HTML 폼으로, "cds"라는 드롭다운 목록이 포함되어 있습니다.

폼 아래의 문장은 "txtHint"라는 div를 포함하고 있습니다. 이 div는 웹 서버에서检索된 데이터의占位符으로 사용됩니다.

사용자가 데이터를 선택할 때, "showCD"라는 함수가 실행됩니다. 이 함수의 실행은 "onchange" 이벤트가 트리거합니다.

다시 말해, 사용자가 드롭다운 목록의 값을 변경할 때마다 showCD 함수가 호출됩니다.

XML 파일

XML 파일은 "cd_catalog.xml". 이 파일에는 CD 컬렉션에 대한 데이터가 포함되어 있습니다.

JavaScript

이는 "selectcd.js" 파일에 저장된 JavaScript 코드입니다:

var xmlHttp
function showCD(str)
{ 
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
 {
 alert ("Browser does not support HTTP Request")
 return
 } 
var url="getcd.php"
url=url+"?q="+str
url=url+"&sid="+Math.random()
xmlHttp.onreadystatechange=stateChanged 
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}
function stateChanged() 
{ 
 if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
 { 
 document.getElementById("txtHint").innerHTML=xmlHttp.responseText 
 } 
}
function GetXmlHttpObject()
{
var xmlHttp=null;
try
 {
 // 파이어폭스, 오퍼라 8.0+, 사파리
 xmlHttp=new XMLHttpRequest();
 }
catch (e)
 {
 // 인터넷 익스플로어
 try
  {
  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  }
 catch (e)
  {
  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
 }
return xmlHttp;
}

예제 설명:

stateChanged()과 GetXmlHttpObject 함수는 이전 장에서와 동일합니다. 이전 페이지에서의 관련 설명을 참조하십시오。

showCD() 함수

드롭다운 목록에서 항목을 선택하면 함수가 실행됩니다:

  1. XMLHTTP 객체를 생성하기 위해 GetXmlHttpObject 함수를 호출합니다
  2. 서버로 보내는 URL (파일명)을 정의합니다
  3. URL에 드롭다운 목록 내용을 포함하는 매개변수 (q)를 추가합니다
  4. 서버가 캐시된 파일을 사용하지 않도록 임의의 수를 추가합니다
  5. 이벤트가 발생할 때 stateChanged를 호출합니다
  6. 주어진 URL을 통해 XMLHTTP 객체를 엽니다
  7. 서버로 HTTP 요청을 보냅니다

PHP 페이지

JavaScript가 호출하는 이 서버 페이지는 "getcd.php"라는 간단한 PHP 파일입니다。

이 페이지는 PHP로 작성되어 있으며, "cd_catalog.xml" XML 문서를 로드하는 XML DOM을 사용합니다:cd_catalog.xml"。

XML 파일의 쿼리 실행을 위해 코드가 실행되며, 결과는 HTML로 반환됩니다:

<?php
$q=$_GET["q"];
$xmlDoc = new DOMDocument();
$xmlDoc->load("cd_catalog.xml");
$x=$xmlDoc->getElementsByTagName('ARTIST');
for ($i=0; $i<=$x->length-1; $i++)
{
//Element 노드 만 처리
if ($x->item($i)->nodeType==1)
  {
  if ($x->item($i)->childNodes->item(0)->nodeValue == $q)
    { 
    $y=($x->item($i)->parentNode);
    }
  }
}
$cd=($y->childNodes);
for ($i=0;$i<$cd->length;$i++)
{ 
//Element 노드 만 처리
if ($cd->item($i)->nodeType==1)
  { 
  echo($cd->item($i)->nodeName);
  echo(": ");
  echo($cd->item($i)->childNodes->item(0)->nodeValue);
  echo("<br />");
  } 
}
?>

예제 설명

JavaScript에서 PHP 페이지로 요청이 전송될 때 발생합니다:

  1. PHP가 "cd_catalog.xml" 파일의 XML DOM 객체를 생성합니다
  2. 모든 "artist" 요소를 순회하며 (nodetypes = 1),JavaScript에서 전달된 데이터와 일치하는 이름을 찾습니다
  3. CD에 포함된 올바른 artist를 찾습니다
  4. album의 정보를 출력하고 "txtHint" 대체 문자에 보내십시오