PHP Приклад - AJAX та XML
AJAX може використовуватись для інтерактивної комунікації з XML файлом.
AJAX XML Приклад
Наступний приклад продемонструє, як вебсторінка може отримати інформацію з файлу XML за допомогою AJAX:
Приклад
Пояснення прикладу - HTML сторінка
Коли користувач вибирає компакт-диск у спадному списку вище, функція під назвою "showCD()" виконується. Функція запускається подією "onchange":
<html>
<head>
<script>
function showCD(str) {
if (str=="") {
document.getElementById("txtHint").innerHTML="";
return;
}
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function() {
if (this.readyState==4 && this.status==200) {
document.getElementById("txtHint").innerHTML=this.responseText;
}
}
xmlhttp.open("GET","getcd.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>
<form>
Select a CD:
<select name="cds" onchange="showCD(this.value)">
<option value="">Select a CD:</option>
<option value="Bob Dylan">Bob Dylan</option>
<option value="Bee Gees">Bee Gees</option>
<option value="Cat Stevens">Cat Stevens</option>
</select>
</form>
<div id="txtHint"><b>CD info will be listed here...</b></div>
</body>
</html>
Функція showCD() виконує наступне:
- Перевірте, чи вибрано компакт-диск
- Створіть об’єкт XMLHttpRequest
- Створіть функцію, яка буде виконана, коли відповідь сервера буде готова
- Надіслати запит у файл на сервері
- Зверніть увагу, що параметр (q) додається до URL-адреси (з вмістом спадного списку)
PHP файл
Сторінка на сервері, викликана JavaScript вище, є файлом PHP під назвою "getcd.php".
PHP скрипт завантажує XML-документ "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++) {
//Обробляти лише вузли елементів
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++) {
//Обробляти лише вузли елементів
if ($cd->item($i)->nodeType==1) {
echo("<b>" . $cd->item($i)->nodeName . ":</b> ");
echo($cd->item($i)->childNodes->item(0)->nodeValue);
echo("<br>");
}
}
?>
Коли запит CD надсилається з JavaScript на сторінку PHP, відбувається наступне:
- PHP створює XML DOM об’єкт
- Знайти всі елементи <artist> які відповідають імені, надісланому з JavaScript
- Вивести інформацію про альбом (надіслати у заповнювач "txtHint")