Мы разобрали основной механизм работы метода jQuery $.ajax() . Теперь не плохо бы рассмотреть случаи из реальной практики: каким способом и откуда можно получать данные для передачи ajax-запросом.
Получение данных из формы.Есть несколько способов получить данные из полей формы:
Остановимся на двух последних и не столько на том, как получать данные (тут всё просто ), а на том, как их обрабатывать на стороне сервера. Возьмем, к примеру, такую форму:
HTML (файл index.html )
Ф.И.О:
Email:
Пол:
Мужской
Женский
Получать письма:
Да
Нет
И напишем такой JS-код
jQuery (файл script.js )
$(function(){ $("#my_form").on("submit", function(e){ e.preventDefault(); var $that = $(this), fData = $that.serialize(); // сериализируем данные // ИЛИ // fData = $that.serializeArray(); $.ajax({ url: $that.attr("action"), // путь к обработчику берем из атрибута action type: $that.attr("method"), // метод передачи - берем из атрибута method data: {form_data: fData}, dataType: "json", success: function(json){ // В случае успешного завершения запроса... if(json){ $that.replaceWith(json); // заменим форму данными, полученными в ответе. } } }); }); });
Теперь напишем обработчик таким образом, чтоб наглядно увидеть разницу между методами serialize() и serializeArray()
PHP-обработчик (файл handler.php )
Robert Sheckly,
необходимо, помимо указания нового адреса файла - serverAddr ="http://zykov/data.xml", заменить в функции
handleStateChange()
resp=xmlHttp.responseText;
resp=xmlHttp.responseXML.getElementsByTagName("name").firstChild.data;
Тогда вместо сообщения
Сервер передал: Привет, клиент!
появится сообщение
Сервер передал: Robert Sheckly
AJAX - группа технологий, которая используется в веб разработке для создания интерактивных приложений. AJAX позволяет передавать данные с сервера без перезагрузки страницы. Таким образом можно получать очень впечатляющие результаты. А библиотека jQuery существенно облегчает реализацию AJAX с помощью встроенных методов.
Для реализации технологии используется метод $.ajax или jQuery.ajax :
$.ajax(свойства) или $.ajax(url [, свойства])
Второй параметр был добавлен в версии 1.5 jQuery.
url - адрес запрашиваемой страницы;
properties - свойства запроса.
Полный список параметров приведен в документации jQuery.
В уроке мы используем несколько наиболее часто используемых параметров.
success (функция) - данная функция вызывается после успешного завершения запроса. Функция получает от 1 до 3 параметров (в зависимости от используемой версии библиотеки). Но первый параметр всегда содержит возвращаемые с сервера данные.
data (объект/строка) - пользовательские данные, которые передаются на запрашиваемую страницу.
dataType (строка) - возможные значения: xml, json, script или html. Описание типа данных, которые ожидаются в ответе сервера.
type (строка) - тип запроса. Возможные значения: GET или POST. По умолчанию: GET.
url (строка) - адрес URL для запроса.
Пример 1Простая передача текста.
$.ajax({ url: "response.php?action=sample1", success: function(data) { $(".results").html(data); } });
Для ответа имеется элемент div .result .
Ждем ответа
Сервер просто возвращает строку:
Echo "Пример 1 - передача завершилась успешно";
Пример 2Передаем пользовательские данные PHP скрипту.
$.ajax({ type: "POST", url: "response.php?action=sample2", data: "name=Andrew&nickname=Aramis", success: function(data){ $(".results").html(data); } });
Сервер возвращает строку со вставленными в нее переданными данными:
Echo "Пример 2 - передача завершилась успешно. Параметры: name = " . $_POST["name"] . ", nickname= " . $_POST["nickname"];
Пример 3Передача и выполнение кода JavaScript
$.ajax({ dataType: "script", url: "response.php?action=sample3", })
Сервер выполняет код:
Echo "$(".results").html("Пример 3 - Выполнение JavaScript");";
Пример 4Используем XML. Пример можно использовать для работы с внешними XML, например, RSS фидом.
$.ajax({ dataType: "xml", url: "response.php?action=sample4", success: function(xmldata){ $(".results").html(""); $(xmldata).find("item").each(function(){ $(" ").html($(this).text()).appendTo(".results"); }); } });
Сервер должен возвращать XML код:
Header ("Content-Type: application/xml; charset=UTF-8");
echo