
- •13. Создание динамического наполнения страницы. JavaScript-библиотеки и технология Comet
- •13.1. Представление объектов в виде json
- •13.1.1. Использование
- •13.1.2. Синтаксис
- •13.1.3. Использование json в Ajax
- •13.1.4. Вопросы безопасности
- •13.1.4.1. JavaScript eval()
- •13.1.4.2. Подделка кроссдоменного запроса
- •13.2. Библиотека ExtJs
- •13.2.1. Объектно-ориентированное программирование
- •13.2.1.1. Ext.Namespace
- •13.2.1.2. Ext.Override
- •13.2.1.3. Ext.Extend и соглашения о параметрах конструкторов
- •13.2.1.4. Ext.Apply
- •13.2.1.5. Ext.ApplyIf
- •13.2.2. Построение веб-интерфейсов
- •13.2.3. Использование css
- •13.2.4. Основные компоненты и возможности
- •13.2.5. Визуальные компоненты
- •13.3. Библиотека Prototype
- •13.3.1. Возможности
- •13.3.1.6. Объект Ajax
- •13.3.1.7. Класс Element
- •13.3.2. Объектно-ориентированное программирование
- •13.4. Библиотека jQuery
- •13.4.1. Философия
- •13.4.2. Использование
- •13.4.4. Инициализация
- •13.4.5. Управление элементами документов и их свойствами
- •13.4.5.1. Последовательный вызов функций
- •13.4.6. Работа с индивидуальными элементами
- •13.4.6.1. Индексы и get([index])
- •13.4.6.2. Each(fn)
- •13.4.7. Анимации
- •13.4.7.1. Animate
- •13.4.7.2. Эффекты
- •13.4.8. Ajax
- •13.5. Модель работы веб-приложений Comet
- •13.5.1. Http server push
- •13.5.2. Pooling
- •13.6. Ключевые термины
- •13.7. Краткие итоги
13.4.8. Ajax
Базовыми функциями для работы с AJAX являются post() и get() (есть еще более низкоуровневая, ajax()):
$.post(url[, params[, callback]])
$.get(url[, params[, callback]])
Здесь:
url – адрес страницы, на которую будет отправлен запрос;
params – параметры, передаваемые в запросе в виде пар "ключ : значение";
callback – функция, которая будет вызвана в случае успешного завершения вызова.
Например:
$.post(
'/ajaxtest.php',
{
type: "test-request",
param1: "param1",
param2: 2
},
onAjaxSuccess
);
function onAjaxSuccess(data) {
// Здесь получаем данные, отправленные сервером
alert(data);
}
13.5. Модель работы веб-приложений Comet
Технология Comet – модель работы Веб-приложения, при которой постоянное HTTP-соединение позволяет Веб-серверу отправлять (push) данные браузеру без дополнительного запроса со стороны браузера [13, 14, 15, 16]. Название "Comet" используется для обозначения множества техник, позволяющих достичь такого взаимодействия. Общее у этих методов то, что они основаны на технологиях, непосредственно поддерживаемых браузером, таких как JavaScript, а не на плагинах. Теоретически подход Comet отличается от изначальной концепции Всемирной паутины, при которой браузер запрашивает страницу полностью или частично для того, чтобы обновить страницу. Однако на практике приложения Comet обычно используют Ajax с "long polling" для проверки наличия новой информации на сервере.
13.5.1. Http server push
HTTP server push (так же называемое HTTP streaming) – механизм отправки данных с Веб-сервера к Веб-браузеру (рис. 13.4) [15]. HTTP server push может быть реализовано посредством нескольких механизмов. Основной – это когда Веб-сервер не закрывает соединение после отправки ответа клиенту. Веб-сервер оставляет соединение открытым, так что если произойдет событие, то оно может быть отправлено одному или множеству клиентов. Иначе данные составляются в очередь до следующего запроса клиента. Большинство серверов реализуют эту функциональность через CGI (например, NPH скрипты в Apache).
Рис. 13.4. Схема работы Comet – HTTP-streaming
Другой механизм относится к специальному MIME type, называемый multipart/x-mixed-replace, который был введен Netscape в 1995. Веб-браузер интерпретирует это как изменения документа всякий раз, когда сервер сообщает о новой версии клиенту. Сегодня это все еще поддерживается Firefox, Opera и Safari, но традиционно игнорируется Internet Explorer. Это применимо к HTML-документам, но также для потокового отображения картинок для приложений работающих с Веб-камерой.
WHATWG Web Applications 1.0 предлагает включить механизм "проталкивания" содержимого клиенту. 1 сентября 2006 браузер Opera реализовала эту новую экспериментальную технологию в функциональности с названием "Server-Sent Events". Сейчас это часть стандартов HTML5. Другой, относящейся к вопросу, частью HTML5 стали Веб-сокеты, которые доступны в Google Chrome, начиная с версии 4.0.249.0, и существуют так же JavaScript библиотеки, эмулирующие работу Веб-сокетов.
В последнее время часто можно услышать выражение real-time web, за которым, как говорят, будущее Интернета. По сути, это набор технологий, который позволяет получать в реальном времени данные добавляемые в Сеть. Частным случаем этой идеи является real-time search – поиск в реальном времени.
На данный момент существует несколько поисковиков в реальном времени, а так же несколько экспериментов от гигантов вроде компании Google. Остаются не решенными некоторые практические вопросы, например определение релевантности в поисковой выдаче, но сама технология трансляции данных в браузер пользователя вполне работоспособна.