Создаем динамические веб-сайты с помощью PHP, MySQL и JavaScript

Печать

Пример Ajax XML, использующий YUI

Теперь посмотрим, как метод asyncRequest используется с XML, для чего вызовем Yahoo! RSS-поток, содержащий сведения о погоде в Вашингтоне, округ Колумбия, воспользовавшись кодом примера 19.2, yuixmlgethtml.

Пример 19.2. yuixmlget.html

<html><head><titlе>Пример YUI XML</title> </head><body>

<h2>3aгрузка XML-контента в DIV-контейнер с помощью YUI</h2>

<div id='inf0'>3T0 предложение будет 3aMeHeHo</div>

<script src="yahoo-min.js"></scri pt>

<scri pt src="event-min.jsH></script>

<script src="connection-min.js"></script>

<script>

url = encodeURI("xml.weather.yahoo.com/forecastrss?p=20500") callback = { success:successHandler, failure:failureHandler } request = YAHOO.util.Connect.asyncRequest('GET', 'xmlget.php?url=' + url, callback)

function successHandler(o) {

root = o.responseXML.documentElement;

title = root.getElementsByTagNameCdescription'JCO].

firstChild.nodeValue date = root.getElementsByTagNameClastBuildDate'HO].

fi rstChild.nodeValue text = root.getElementsByTagNameCdescription'Jtl].

firstChild.nodeValue document.getElementById('i nfo').i nnerHTML = title + "<br />'* + date + "<br />" + text

function failureHandler(o) {

document.getElementById('info').innerHTML = o.status + " " + o.statusText

}

</script></body></html>

Этот документ немного похож на предыдущий, в него включены те же самые сценарии YUI-среды, но тут же вы сможете заметить, что используется другой url. Поскольку сам RSS-поток погоды воспринимает GET-параметр, использующий знак вопроса (?), нам необходимо закодировать его в URI:

url = encodeURI ("xml .weather .yahoo. corn/forecastrss?p=20500**)

В результате кодирования любые специальные символы приобретают форму, не способную запутать PHP-программу, которая в противном случае может посчитать, что ей был передан какой-то дополнительный параметр.

Далее вы увидите, что объект callback не отличается от предыдущего, поэтому мы не будем его рассматривать и перейдем к запросу, в котором изменилось только имя с urlget.php на xmlget.php, для того чтобы вызвать соответствующую РНР-программу для работы с XML. Программа xmlget.php ничем не отличается от той,