AJAX (от англ. Asynchronous JavaScript and XML — «асинхронный JavaScript и XML») — это подход к построению интерактивных пользовательских интерфейсов веб-приложений, заключающийся в «фоновом» обмене данными браузера с веб-сервером. В результате при обновлении данных веб-страница не перезагружается полностью, и веб-приложения могут быть сделаны более быстрыми и удобными.
Сейчас я приведу коды простого примера использования технологии AJAX
Для правильной работы необходимо подключить библиотеку JSHttpRequest
Теперь пара комментариев по поводу кода. Этот код осуществляет обычное суммирование данных пришедших с полей формы и выводит результат в блок с идентификатором container. Особенность лишь в том, что обработка результатов пришедших с формы идет не синхронно (по порядку) как это делалось раньше, а асинхронно (на лету) с использованием библиотеки JSHttpRequest
1. При нажатии на кнопку формы происходит вызов функции Calcul(); в которую передаются значения полей формы - document.form.a.value, document.form.b.value
2. В функции Calcul() задается имя блока контейнера получателя информации var nameBlock = 'container';
3. Далее создается объект класса JSHttpRequest var req = new JSHttpRequest();
У этого класса есть следующие свойства
Свойство
Описание
onreadystatechange
обработчик события, которое происходит при каждой смене состояния объекта
readyState
возвращает текущее состояние объекта (0 — неинициализирован, 1 — открыт, 2 — отправка данных, 3 — получение данных и 4 — данные загружены)
responseText
текст ответа на запрос
responseXML
текст ответа на запрос в виде XML, который затем может быть распарсен посредством DOM
status
возвращает HTTP-статус в виде числа (404 — «Not Found», 200 — «OK» и т. д.)
statusText
возвращает статус в виде строки («Not Found», «OK» и т. д.)
Таким образом следующий код проверят загружены ли данные и если данные загружены он присваевает контейнеру с именем nameBlock результат отработки скрипта обработчика. В данном случае скриптом обработчиком является файл action.php в котором происходит суммирование значений полей формы.
4. Таким образом в контейнер с именем container подгружаются сумма значений полей формы но загрузка происходит не последовательно с ожиданием отработки файла action.php а асинхронно за счет асинхронной передачи данных в скрипт (req.responseJS.res), не по методу POST, а по методу GET.