AJAX можно использовать для интерактивного взаимодействия с файлами XML.
Следующий пример продемонстрирует, как веб-страница считывает информацию из XML-файла через AJAX:
Когда пользователь выбирает компакт-диск в раскрывающемся списке выше, выполняется функция с именем «showCD()». Эта функция запускается событием «onchange»:
<html><head><script>function showCD(str){ if (str=="") { document.getElementById("txtHint").innerHTML=""; return } if (window.XMLHttpRequest) { // Браузеры IE7+, Firefox, Chrome, Opera, Safari выполняют xmlhttp=new XMLHttpRequest() } else { // IE6, IE5; Браузер выполняет xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("txtHint"). внутреннийHTML=xmlhttp.responseText } }; xmlhttp.open("GET","getcd.php?q="+str,true();</script></head><body><form>Выберите компакт-диск:<выберите имя); ="cds" onchange="showCD(this.value)"><option value="">Выберите компакт-диск:</option><option value="Боб Дилан">Боб Дилан</option><option value=" Бонни Тайлер">Бонни Тайлер</option><option value="Dolly Parton">Долли Партон</option></select></form><div id="txtHint"><b>Здесь будет указана информация о компакт-диске...</ b></div></body></html>
Функция showCD() выполняет следующие шаги:
Проверьте, выбран ли компакт-диск
Создать объект XMLHttpRequest.
Создайте функцию, которая выполняется, когда ответ сервера готов.
Отправить запрос к файлу на сервере
Обратите внимание на параметр (q), добавленный в конец URL-адреса (содержащий содержимое раскрывающегося списка).
Страница сервера, вызванная выше через JavaScript, представляет собой файл PHP с именем «getcd.php».
Сценарий PHP загружает документ XML «cd_catalog.xml», выполняет запрос к файлу XML и возвращает результаты в формате HTML:
<?php$q=$_GET["q"];$xmlDoc = новый 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».