Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #96, ДЕКАБРЬ 2006 г.

Козырные расклады

Борис Вольфсон

Хакер, номер #096, стр. 096-134-4


После того как в $pages помещено содержимое страниц, необходимо получить значение параметра q из запроса, переданного клиентским скриптом, и если запрос не пустой, пробежаться по массиву $pages и вывести содержимое страниц, которые содержат строку для поиска.

Эмуляция поиска по сайту с выдачей результатов

<?php

// Массив с содержимым страниц сайта

$pages = array(…);

$query = $_GET['q'];

$result = '';

if (!empty($query))

{

foreach ($pages as $page)

if (strstr($page, $query))

$result .= "<li>" . str_replace($query, "<strong>$query</strong>", $page) . "</li>";

if (!empty($result))

echo "<ol>$result</ol>";

else

echo "По запросу \"$query\" ничего найдено!";

}

else

echo "Введите запрос для поиска";

?>

А где же XML?

Хочу XML! Почему мы текст какой-то передаем, обещали же XML? Вообще, если посмотреть на название объекта XMLHttpRequest, то может показаться, что он создан только для передачи XML-данных. На буржуйских форумах и блогах, однако, часто выражается мнение, что это просто дань моде и можно использовать другие форматы - от чистого текста и HTML до текста на JavaScript. Но есть один существенный факт: при передаче данных в виде XML, они занимают меньше места и быстрее грузятся.

Разберем такой пример. Есть XML-файл (возможно генерящийся скриптом), который содержит название и адрес некого банка :).

Информация о банке в виде XML

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<bank>

<bank_name>Банк Васи Пупкина</bank_name>

<bank_address>ул. Ленинградская, 57</bank_address>

</bank>

Его надо получить, распарсить и вывести информацию в отформатированном виде. Сделать это очень просто с помощью объектов, встроенных в JavaScript:

Получение и обработка информации о банке

function getXmlRequest() {

if (httpRequest.readyState == 4) {

var xmlDocument = httpRequest.responseXML;

var bankName = xmlDocument.getElementsByTagName('bank_name').item(0).firstChild.data;

var bankAddress = xmlDocument.getElementsByTagName('bank_address').item(0).firstChild.data;

document.getElementById(resultId).innerHTML = '<strong>Название банка: </strong>' + bankName + '<br />'

+ '<strong>Адрес банка: </strong>' + bankAddress;

}

}

Если ты заметил, здесь в основном используются свойства и методы объекта responseXML, который представляет собой ответ сервера на запрос в виде XML. C ним довольно удобно работать, так как все необходимые функции встроены. Сама же ссылка будет выглядеть так:

Вызов функции getXmlRequest в качестве параметра

<a href="#" onclick="javascript:sendRequest('1.xml', 'result', getXmlRequest);">Кликни по мне, чтобы отправить запрос</a>.

Назад на стр. 096-134-3  Содержание  Вперед на стр. 096-134-5