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

ЖАНРЫ

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

jsonp

Когда параметр

dataType
имеет значение «jsonp», значение параметра
url
или
data
обычно включает параметр строки запроса вида «jsonp=?». Если библиотека jQuery не обнаружит этот параметр в URL-адресе или в данных, она вставит его, используя значение параметра jsonp в качестве имени параметра в строке запроса. По умолчанию параметр
jsonp
имеет значение «callback». Присвойте ему другое значение, если сервер, поддерживающий обмен данными в формате JSONP, ожидает получить другое имя параметра в строке запроса и вы явно не указываете это имя в строке URL или в данных. Подробнее о формате JSONP рассказывается в разделе 18.2.

jsonpCallback

Для

запросов с параметром
dataType
, имеющим значение «jsonp» (или «json», когда URL-адрес включает параметр строки запроса, такой как «jsonp=?»), библиотека jQuery будет изменять строку URL, подставляя вместо знака вопроса имя функции-обертки, которой сервер будет передавать данные. Обычно библиотека jQuery синтезирует уникальное имя функции, опираясь на текущее время. Присвойте этому параметру свое значение, если вам потребуется явно указать собственную функцию. Но имейте в виду, что в этом случае библиотека jQuery не будет вызывать функции обратного вызова success и complete и не будет возбуждать обычные события.

processData

Когда значением параметра

data
является объект (или объект передается во втором аргументе функции
jQuery.get
и родственным ей функциям), библиотека jQuery обычно преобразует этот объект в строку в формате «application/x-www-form-urlencoded» (как описывается во врезке в разделе 19.6.2.2). Если потребуется предотвратить это преобразование (например, чтобы передать объект
Document
в теле POST-запроса), присвойте этому параметру значение false.

scriptCharset

Для междоменных запросов данных типов «script» и «jsonp», при выполнения которых используется элемент

<script>,
этот параметр определяет значение атрибута
charset
элемента. Он никак не влияет на обычные запросы, выполняемые с помощью объекта
XMLHttpRequest
.

traditional

В библиотеке jQuery версии 1.4 несколько изменился способ сериализации объектов с данными в строки формата «application/х-www-form-urlencoded» (подробности приводятся во врезке в разделе 19.6.2.2). Присвойте этому параметру значение true, если необходимо, чтобы библиотека jQuery использовала прежний порядок.

username, password

Если для выполнения запроса необходимо выполнить процедуру аутентификации пользователя, укажите имя пользователя и пароль в этих двух параметрах.

xhr

Этот параметр определяет фабричную функцию, создающую объект

XMLHttpRequest
. Она вызывается без аргументов и должна возвращать объект, реализующий прикладной программный интерфейс объекта
XMLHttpRequest
. Этот весьма низкоуровневый обработчик позволяет создавать собственные обертки вокруг объекта
XMLHttpRequest
и добавлять новые особенности или расширять его методы.

19.6.4. События в архитектуре Ajax

В разделе 19.6.3.2 говорилось, что функция

jQuery.ajax
имеет четыре параметра, определяющие функции обратного вызова:
befоreSend
,
success
,
error
и
complete
. Помимо вызова этих функций, функции поддержки архитектуры Ajax в библиотеке jQuery также возбуждают собственные события на каждой стадии выполнения запроса. В следующей таблице перечислены параметры, определяющие функции обратного вызова, и соответствующие им события:

Зарегистрировать обработчики этих событий можно с помощью метода

bind
(раздел 19.4.4), используя строку с типом события из второй колонки, или с помощью методов из третьей колонки. Метод
ajaxSuccess
и другие действуют точцо так же, как
click, mouseover
и другие простые методы регистрации событий, о которых рассказывалось в разделе 19.4.1.

Поскольку события, генерируемые реализацией архитектуры Ajax, являются нестандартными и генерируются самой библиотекой jQuery, а не броузером, объект

Event
, передаваемый обработчикам, не содержит сколько-нибудь полезной информации. Однако вместе со всеми событиями - «ajaxSend», «ajaxSuccess», «ajaxError» и «ajaxComplete» - передаются дополнительные аргументы. Всем обработчикам этих событий будет передаваться два дополнительных аргумента. В первом дополнительном аргументе будет передаваться объект
XMLHttpRequest
, а во втором - объект с параметрами. Это означает, что обработчик события, например «ajaxSend», сможет добавлять собственные заголовки в объект
XMLHttpRequest
, подобно функции обратного вызова
beforeSend
. Обработчикам события «ajaxError» передается третий дополнительный аргумент помимо двух, только что описанных. В этом последнем аргументе будет передаваться объект
Error
, если таковой имеется, который был создан в результате возникшей ошибки. Довольно странно, но обработчикам событий архитектуры Ajax не передается код состояния, генерируемый библиотекой jQuery. Если, например, в обработчике события «ajaxSuccess» потребуется отличать состояния «success» и «notmodified», необходимо будет проверить код состояния HTTP-ответа в объекте
XMLHttpRequest
.

Последние два события, перечисленные в таблице выше, отличаются от других тем, что не имеют соответствующих им функций обратного вызова, а также тем, что их обработчикам не передаются дополнительные аргументы. «ajaxStart» и «ajaxStop» - это пара событий, которые извещают о начале и окончании выполнения сетевых операций при выполнении Ajax-запроса. Когда библиотека jQuery не выполняет ни одного Ajax-запроса и инициируется новый запрос, она возбуждает событие «ajaxStart». Если до того, как завершится первый запрос, будут запущены новые запросы, эти новые запросы не будут вызывать появление нового события «ajaxStart». Событие «ajaxStop» генерируется, когда завершится последний Ajax-запрос и при этом библиотека jQuery уже не выполняет никаких сетевых операций. Эта пара событий может пригодиться для отображения и сокрытия анимированного сообщения «Загрузка...» или изображения, свидетельствующего о выполнении сетевых операций. Например:

$("#loading_animation").bind({

ajaxStart: function {

$(this).show; },

ajaxStop: function { $(this).hide: }

});

Обработчики событий «ajaxStart» и «ajaxStop» можно связать с любым элементом документа: библиотека jQuery генерирует их глобально (раздел 19.4.6), а не для какого-то конкретного элемента. Другие четыре события архитектуры Ajax-«ajaxSend», «ajaxSuccess», «ajaxError» и «ajaxComplete» - также обычно генерируются глобально, поэтому их обработчики также можно связать с любым элементом документа. Однако если установить параметр context при вызове функции

jQuery.ajax
, эти четыре события будут генерироваться только в контексте указанного элемента.

Наконец, запомните, что появление всех событий архитектуры Ajax в библиотеке jQuery можно предотвратить, присвоив параметру

global
значение false. Несмотря на обескураживающее имя параметра
global
, присваивание ему значения false предотвращает возбуждение событий не только в глобальном масштабе, но и в объекте context.

19.7. Вспомогательные функции

Библиотека jQuery определяет множество вспомогательных функций (и два свойства), которые могут вам пригодиться в ваших программах. Как вы увидите в списке ниже, для многих из этих функций теперь имеются эквиваленты в стандарте ECMAScript 5 (ES5). Функции в библиотеке jQuery были созданы еще до появления стандарта ES5 и действуют во всех броузерах. Ниже в алфавитном порядке перечислены вспомогательные функции:

Поделиться с друзьями: