AJAX с помощью jQuery. Руководство для начинающих. Часть 3
В последней части серии, посвященной AJAX, мы продолжаем знакомить читателя с методами и приемами сей актуальной технологии веб программирования.
Получаем данные в формате JSON с помощью метода $.getJSON()
Метод $.getJSON()
открывает простой путь к получению данных в формате JSON с сервера. Он эквивалентен вызову метода $.get()
с параметром формата данных "json"
. Синтаксис его вызова идентичен синтаксису метода $.get()
за исключением того, что вам не нужно указывать формат данных.
Например, наш пример с прогнозом погоды из предыдущих уроков серии можно изменить следующим образом:
$('#getForecast').click( function() { var data = { city: "Васюки", date: "20120318" }; $.getJSON( "getForecast.txt", data, success ); } );
Получаем и запускаем код JavaScript с помощью метода $.getScript()
Также как и метод $.getJSON()
, который является короткой записью вызова метода $.get()
для получения данных в формате JSON, метод $.getScript()
является короткой записью вызова метода $.get()
для получения и выполнения кода JavaScript, то есть аналогично использованию параметра формата данных "script"
. Метод $.getScript()
получает два аргумента:
- URL файла JavaScript для загрузки.
- Опциональную возвратную функцию, которая выполняется по завершению выполнения загруженного JavaScript кода.
Метод $.getScript()
используется для загрузки библиотек и плагинов JavaScript "на лету", то есть тогда, когда они нужны. Так можно уменьшить время начальной загрузки страницы, потому что не нужно включать в заголовок страницы каждую библиотеку JavaScript, которая может быть понадобится, а может быть и нет.
Для демонстрации работы метода $.getScript()
переместим код, который выводит прогноз в отдельный файл JavaScript showForecast.js
. Весь код будет размещен в функции showForecast()
:
function showForecast( forecastData ) { var forecast = forecastData.city + ". Прогноз погоды на " + forecastData.date; forecast += ": " + forecastData.forecast + ". Максимальная температура:" + forecastData.maxTemp + "C"; alert( forecast ); }
Также изменим страницу showForecast.html
для получения нашего кода JavaScript с помощью метода $.getScript()
:
<!doctype html> <html lang="ru"> <head> <title>Прогноз погоды</title> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> </head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script> $( function() { $.getScript( "showForecast.js", function() { $('#getForecast').click( function() { var data = { city: "Васюки", date: "20120318" }; $.get( "getForecast.txt", data, showForecast, "json" ); } ); } ); } ); </script> </head> <body> <button id="getForecast">Получить прогноз погоды</button> </body> </html>
Запускаем демонстрационный файл и наблюдаем результат работы кода JavaScript, который подгружается из другого файла по мере необходимости.
Код JavaScript в файле showForecast.html
начинается с вызова $.getScript()
для загрузки библиотеки showForecast.js
. Также создается анонимная возвратная функция, которая выполняется сразу после загрузки showForecast.js
. Данная функция добавляет обработчик события click
для кнопки #getForecast
, который вызывает метод $.get()
для получения файла getForecast.txt
и выполнения загруженной функции showForecast()
для вывода сообщения.
Метод $.getScript()
добавляет случайный параметр к строке запроса (например,?_=1330395371668
) для предотвращения кэширования браузером файла JavaScript.
Создаем обобщенный запрос AJAX с помощью $.ajax()
Высокоуровневые методы AJAX, которые мы рассмотрели ранее ($.get()
, $.post()
, load()
, $.getJSON()
и $.getScript())
открывают простой и легкий путь к использованию общих типов запросов AJAX в своих приложениях. Но иногда требуется более сильный контроль над запросом, или нужно решить задачу, которая недоступна высокоуровневым методам.
В такой ситуации нужно использовать низкоуровневый метод jQuery $.ajax()
. Вызов метода $.ajax()
делает AJAX запрос к указанному URL. Обобщенный синтаксис вызова следующий:
$.ajax( url [, параметры] );
Аргумент
url
является адресом URL к которому производится запрос, а параметры
является опциональным объектом, который содержит различные значения, которые определяют, как запрос будет выполняться.
Параметры, которые можно использовать с методом $.ajax()
:
Параметр | Описание | Значение по умолчанию |
---|---|---|
cache |
Устанавливаем значение true , чтобы разрешить кеширование ответа от сервера, или значение false, чтобы всегда производить запрос. Значение false также принуждает jQuery добавлять случайное число к запросу для предотвращения кеширования.. |
true (false , когда используется со значениями 'script' и 'jsonp' параметра dataType ) |
complete |
Задает возвратную функцию, которая выполняется по завершению запроса (независимо от успешности операции). | Нет |
data |
Данные, которые пересылаются на сервер в запросе. | Нет |
dataType |
Ожидаемый тип данных ответа. Дополнительно можно использовать значение "jsonp" для выполнения запроса JSONP. |
Автоматическое определение данных |
error |
Задает возвратную функцию, которая выполняется. если запрос завершился ошибкой. | Нет |
headers |
Дополнительный заголовок HTTP , который отправляется вместе с запросом в виде пар ключ/значение. | {} |
password |
Пароль, который используется, если сервер HTTP требует аутентификации. | Нет |
success |
Задает возвратную функцию, которая выполняется, если запрос завершается успешно. | Нет |
timeout |
Время ожидания (в миллисекундах) завершения запроса AJAX. Значение 0 означает, что jQuery будет ждать без ограничения во времени. | 0 |
type |
Тип запроса: "GET" или "POST" . |
"GET" |
username |
Имя пользователя, если сервер HTTP требует аутентификации. | Нет |
Полный список параметров приводится в документации jQuery.
Изменим наш пример для использования метода $.ajax()
. Мы можем для нашего прогноза отказаться от кеширования и будем обрабатывать ошибки. Вот модифицированный код страницы showForecast.html
:
<!doctype html> <html lang="ru"> <head> <title>Прогноз погоды</title> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> </head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script> $( function() { $('#getForecast').click( function() { var data = { city: "Васюки", date: "20120318" }; $.ajax( "getForecast.txt", { cache: false, data: data, dataType: "json", error: errorHandler, success: success } ); } ); function success( forecastData ) { var forecast = forecastData.city + ". Прогноз на " + forecastData.date; forecast += ": " + forecastData.forecast + ". Максимальная температура: " + forecastData.maxTemp + "C"; alert( forecast ); } function errorHandler() { alert( "Есть проблемы с получением прогноза. Наверно, Васюки смыло в море." ); } } ); </script> </head> <body> <button id="getForecast">Получить прогноз погоды</button> <div id="forecast"></div> </body> </html>
Запускаем код демонстрации и наслаждаемся результатом.
В данном примере мы используем метод $.ajax()
для генерации запроса AJAX. Мы передаем URL в запрос (getForecast.txt
) вместе со списком опций. Три из данных опций (data
, dataType
и success
) соответствуют аргументам, которые мы передаем в метод $.get()
. Остальные два (cache: false
и error: errorHandler
) отключают кеширование и устанавливают функцию обработки ошибок errorHandler().
Функция errorHandler()
просто выдает сообщение об ошибке пользователю.
Устанавливаем значения по умолчанию с помощью метода $.ajaxSetup()
Вместо того, чтобы каждый раз при формировании запроса AJAX задавать большое количество различных повторяющихся параметров, таких как success
, cache
and type
можно использовать метод $.ajaxSetup()
для установки значений по умолчанию. Все запросы AJAX jQuery будут использовать заданный установки, пока их не изменят.
Например, можно по умолчанию отключить кеширование для всех запросов AJAX:
$.ajaxSetup( { cache: false } );
Заключение
Наше введение в технологию AJAX завершилось. Мы представили основные средства для формирования и обработки запросов AJAX с помощью методов jQuery. Остается только наработать практический опыт их применения.
Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/leAz8ct6y60/lessons.php
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2024-11-26 » Капитан грузового судна, или Как начать использовать Docker в своих проектах
- 2024-11-26 » Обеспечение безопасности ваших веб-приложений с помощью PHP OOP и PDO
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-15 » Перенос сайта на WordPress с одного домена на другой
- 2024-11-08 » OSPanel 6: быстрый старт
- 2024-11-08 » Как установить PhpMyAdmin в Open Server Panel
- 2024-09-30 » Как быстро запустить Laravel на Windows
- 2024-09-25 » Next.js
- 2024-09-05 » OpenAI рассказал, как запретить ChatGPT использовать содержимое сайта для обучения
- 2024-08-28 » Чек-лист: как увеличить конверсию интернет-магазина на примере спортпита
- 2024-08-01 » WebSocket
- 2024-07-26 » Интеграция с Яндекс Еда
- 2024-07-26 » Интеграция с Эквайринг
- 2024-07-26 » Интеграция с СДЕК
- 2024-07-26 » Интеграция с Битрикс-24
- 2024-07-26 » Интеграция с Travelline
- 2024-07-26 » Интеграция с Iiko
- 2024-07-26 » Интеграция с Delivery Club
- 2024-07-26 » Интеграция с CRM
- 2024-07-26 » Интеграция с 1C-Бухгалтерия
- 2024-07-24 » Что такое сторителлинг: техники и примеры
- 2024-07-17 » Ошибка 404: что это такое и как ее использовать для бизнеса
- 2024-07-03 » Размещайте прайс-листы на FarPost.ru и продавайте товары быстро и выгодно
- 2024-07-01 » Профилирование кода в PHP
- 2024-06-28 » Изучаем ABC/XYZ-анализ: что это такое и какие решения с помощью него принимают
- 2024-06-17 » Зачем вам знать потребности клиента
- 2024-06-11 » Что нового в работе Яндекс Метрики: полный обзор обновления
- 2024-06-11 » Поведенческие факторы ранжирования в Яндексе
- 2024-06-11 » Скорость загрузки сайта: почему это важно и как влияет на ранжирование
Чтобы вырастить плодоносящий сайт - его полезно регулярно поливать и удобрять с помощью рекламы и оптимизации Компания "RedLine" |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.