Чтение онлайн

на главную - закладки

Жанры

JavaScript. Подробное руководство, 6-е издание
Шрифт:

В отличие от

jQuery.getScript,
функция
jQuery.getJSON
принимает необязательный аргумент с данными, подобный тому, что передается методу
load.
Если функции
jQuery.getJSON
необходимо передать данные, они должны передаваться во втором аргументе, а функция обратного вызова - в третьем. Если дополнительные данные не требуются, функцию обратного вызова можно передать во втором аргументе. Если данные являются строкой, она будет добавлена в конец URL-адреса, вслед за символом ? или &. Если данные передаются в виде объекта, он будет преобразован в строку (как описывается во
врезке) и добавлен в конец URL-адреса.

Если строка URL или данных, передаваемая функции

jQuery.getJSON,
содержит последовательность символов «=?» в конце или перед амперсандом, она определяет запрос JSONP. (Описание формата JSONP приводится в разделе 18.2.) Библиотека jQuery заменит знак вопроса именем функции обратного вызова, которая будет создана автоматически, и функция
jQuery.getJS0N
будет действовать, как если бы выполнялся запрос сценария, а не объекта в формате JSON. Этот прием не работает со статическими JSON-файлами данных: он может применяться только при наличии сценариев на стороне сервера, поддерживающих формат JSONP. Однако, поскольку данные в формате JSONP обрабатываются как сценарии, для их получения допускается выполнять междоменные запросы.

19.6.2.3. jQuery.get и jQuery.post

Функции

jQuery.get
и
jQuery.post
загружают содержимое из указанного адреса URL, отправляя дополнительные данные, если они имеются, и передавая результат указанной функции обратного вызова. Функция
jQuery.get
делает это, выполняя HTTP-запрос методом GET, а функция
jQuery.post
– методом POST, но во всем остальном эти две вспомогательные функции совершенно идентичны. Обе они принимают те же три аргумента, что и функция
jQuery.getJSON:
обязательный URL-адрес, необязательную строку или объект с данными и технически необязательную, но практически всегда используемую функцию обратного вызова. В первом аргументе функции обратного вызова передаются полученные данные, во втором - строка «success» и в третьем - объект
XMLHttpRequest
(если он использовался для выполнения запроса):

// Запросить текст с сервера и отобразить его в диалоге alert

jQuery.get("debug.txt", alert);

Помимо трех аргументов, описанных выше, эти две функции могут принимать четвертый необязательный аргумент (передается как третий аргумент, если дополнительные данные отсутствуют), который определяет тип запрашиваемых данных. Этот аргумент влияет на обработку полученных данных перед передачей их функции обратного вызова. Метод

load
использует тип «html»,
jQuery.getScript
– тип «script», a
jQuery.getJSON
– тип «json». Однако функции
jQuery.get
и
jQuery.post
более гибкие, чем эти специализированные утилиты, и им можно указать любой из этих типов. Допустимые значения этого аргумента и особенности поведения библиотеки jQuery при его отсутствии описываются во врезке.

Типы данных, поддерживаемые реализацией Ajax в библиотеке jQuery

Функциям

jQuery.get
и
jQuery.post
допускается передавать любой из шести типов данных. Кроме того, как описывается ниже, любой из этих типов можно также передавать функции
jQuery.ajax
в виде параметра
dataType
:

"text”

Вернуть ответ сервера как простой текст, без дополнительной обработки.

"html"

Этот тип обрабатывается так же, как тип "text": ответ возвращается как простой текст. Этот тип используется методом

load
, который вставляет текст ответа в документ.

"xml"

Предполагает, что URL-адрес ссылается на данные в формате XML, и для их получения вместо свойства

responseText
объекта
XMLHttpRequest
библиотека jQuery использует свойство
responseXML
. Функции обратного вызова передается не строка с текстом документа, а объект
Document
, представляющий XML-документ.

"script"

Предполагает, что URL-адрес ссылается на файл со сценарием на языке JavaScript, и перед передачей функции обратного вызова текст ответа выполняется как сценарий. Этот тип используется функцией

jQuery.getScript.
Когда указывается тип "script", библиотека будет выполнять междоменные запросы с помощью элемента
<script>
вместо объекта
XMLHttpRequest
.

"json"

Предполагает, что URL-адрес ссылается на файл с данными в формате JSON. Функции обратного вызова в этом случае передается объект, полученный в результате разбора содержимого ответа с помощью функции

jQuery.parseJSON
(раздел 19.7). Этот тип используется функцией
jQuery.getJS0N.
Если указан тип "json" и строка URL или данных содержит "=?", тип преобразуется в "jsonp".

"jsonp"

Предполагает, что URL-адрес ссылается на серверный сценарий, поддерживающий протокол JSONP передачи данных в формате JSON в виде аргумента указанной функции на стороне клиента. (Подробнее о формате JSONP рассказывается в разделе 18.2.) Когда указывается этот тип, функции обратного вызова передается разобранный объект. Поскольку JSONP-запросы могут выполняться с помощью элементов

<script>,
этот тип можно использовать для выполнения междоменных запросов, подобно типу "script”. При использовании этого типа строка URL или данных обычно должна включать параметр вида
"&jsonp=
?" или
"&callback=?".
Библиотека jQuery заменит знак вопроса именем автоматически созданной функции обратного вызова. (Обратите внимание на параметры
jsonp
и
jsonpCallback
, описываемые в разделе 19.6.3.3, позволяющие определить альтернативные варианты.)

Если при вызове

jQuery.get, jQuery.post
или
jQuery.ajax
не указан ни один из этих типов, библиотека jQuery проверит заголовок «Content-Type» HTTP-ответа. Если этот заголовок включает подстроку «xml», функции обратного вызова будет передан XML-документ. Иначе, если заголовок включает подстроку «json», ответ будет разобран, как данные в формате JSON, и полученный объект будет передан функции обратного вызова. Иначе, если заголовок включает подстроку «JavaScript», ответ будет выполнен как сценарий. Иначе данные будут интерпретироваться как простой текст.

Поделиться:
Популярные книги

Последний реанорец. Том XII – Часть II

Павлов Вел
12. Высшая Речь
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний реанорец. Том XII – Часть II

21 ночь

Фави Ксения
Любовные романы:
современные любовные романы
эро литература
7.00
рейтинг книги
21 ночь

Кризис - это возможность. 10 стратегий, которые позволят вам процветать в эпоху перемен

Стейнберг Скотт
Религия и эзотерика:
самосовершенствование
5.00
рейтинг книги
Кризис - это возможность. 10 стратегий, которые позволят вам процветать в эпоху перемен

Жена со скидкой, или Случайный брак

Ардова Алиса
Любовные романы:
любовно-фантастические романы
8.15
рейтинг книги
Жена со скидкой, или Случайный брак

Ворон

LizaMoloko
Фантастика:
попаданцы
фэнтези
гаремник
5.00
рейтинг книги
Ворон

Затмение

Грэм Уинстон
5. Сага о Полдарках
Любовные романы:
исторические любовные романы
6.50
рейтинг книги
Затмение

Очерки истории российской внешней разведки. Том 3

Примаков Евгений Максимович
Научно-образовательная:
история
cпецслужбы
военная история
5.00
рейтинг книги
Очерки истории российской внешней разведки. Том 3

Кодекс Охотника. Книга XVI

Винокуров Юрий
16. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XVI

Тот, кто знает. Книга вторая. Перекресток

Маринина Александра
5.00
рейтинг книги
Тот, кто знает. Книга вторая. Перекресток

Иди на Голгофу. Гомо советикус. Распутье. Русская трагедия

Зиновьев Александр Александрович
Документальная литература:
публицистика
5.00
рейтинг книги
Иди на Голгофу. Гомо советикус. Распутье. Русская трагедия

Христианство: Античность, Византия, Древняя Русь

Фроянов Игорь Яковлевич
Научно-образовательная:
история
5.00
рейтинг книги
Христианство: Античность, Византия, Древняя Русь

Имя нам Легион. Том 4

Дорничев Дмитрий
4. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 4

Кодекс Охотника. Книга XII

Винокуров Юрий
12. Кодекс Охотника
Фантастика:
боевая фантастика
городское фэнтези
аниме
7.50
рейтинг книги
Кодекс Охотника. Книга XII

Сирота

Шмаков Алексей Семенович
1. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
5.00
рейтинг книги
Сирота