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

<b>context</b>

Этот параметр определяет объект, используемый в качестве контекста - значения ссылки

<b>this</b>
- для различных функций обратного вызова. Данный параметр не имеет значения по умолчанию, и если его не устанавливать, функции обратного вызова будут вызываться в контексте объекта с параметрами, в котором они определяются. Значение параметра
<b>context</b>
также воздействует на порядок возбуждения событий механизмом поддержки Ajax (раздел 19.6.4). Значением этого параметра должен быть объект
<b>Window</b>
,
<b>Document</b>
или
<b>Element</b>
, в котором могут возбуждаться события.

<b>beforeSend</b>

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

<b>XMLHttpRequest</b>
, а вторым - объект с параметрами запроса. Функция
<b>beforeSend</b>
дает программе возможность установить собственные НТТР-заголовки в объекте
<b>XMLHttpRequest</b>
. Если эта функция вернет false, выполнение Ajax-запроса будет прервано. Обратите внимание, что для выполнения междоменных запросов типов «script* и «jsonp* объект
<b>XMLHttpRequest</b>
не используется и функция, определяемая параметром
<b>befоreSend</b>
, не вызывается.

<b>success</b>

Этот параметр определяет функцию, которая должна вызываться в случае успешного выполнения Ajax-запроса. В первом аргументе ей передаются данные, отправленные сервером. Во втором аргументе - код состояния, сгенерированный библиотекой jQuery, и в третьем - объект

<b>XMLHttpRequest</b>
, использовавшийся для выполнения запроса. Как описывалось в разделе 19.6.2.3, тип данных в первом аргументе зависит от значения параметра
<b>dataType</b>
или заголовка «Content-Type* в ответе сервера. Если данные имеют тип «xml», в первом аргументе передается объект
<b>Document</b>
. Если данные имеют тип «json* или «jsonp*, в первом аргументе передается объект, полученный в результате разбора ответа сервера в формате JSON. Если данные имеют тип «script», ответом является текст загруженного сценария (однако к моменту вызова функции сценарий уже будет выполнен, поэтому в данном случае ответ обычно игнорируется). Для других типов ответ интерпретируется как простой текст, содержащийся в запрошенном ресурсе.

Код состояния во втором аргументе обычно является строкой «success». Но, если был установлен параметр

<b>ifModified</b>
, в этом аргументе может также передаваться строка «notmodified*. В этом случае сервер не отправляет данные в ответе, и в первом аргументе будет передано значение undefined. Для выполнения междоменных запросов на получение данных типов «script* и «jsonp» используется элемент <script>, а не объект
<b>XMLHttpRequest</b>
, поэтому для таких запросов в третьем аргументе вместо объекта
<b>XMLHttpRequest</b>
будет передаваться значение undefined.

<b>error</b>

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

<b>XMLHttpRequest</b>
запроса (если таковой использовался). Во втором аргументе-код состояния, сгенерированный библиотекой jQuery. Это может быть строка «error» - в случае ошибки протокола HTTP, «timeout» - в случае превышения времени ожидания и «parsererror» - в случае ошибки, возникшей в ходе разбора ответа сервера. Например, если XML-документ или объект в формате JSON будет сформирован неправильно, функция получит код состояния «parser-error». В этом случае в третьем аргументе функции error будет передан объект Error, представляющий исключение. Обратите внимание, что запросы с параметром
<b>dataType=&quot;script&quot;,</b>
возвращающие недопустимый программный код JavaScript, не вызывают ошибки. Любые ошибки в сценарии просто игнорируются и вместо функции error вызывается функция success.

<b>complete</b>

Этот параметр определяет функцию, которая должна вызываться по завершении Ajax-запроса. Каждый Ajax-запрос завершается либо успехом и вызывает функцию success, либо неудачей и вызывает функцию error. Библиотека jQuery вызывает функцию complete после вызова функции success или error. В первом аргументе функции complete передается объект

<b>XMLHttpRequest</b>
, а во втором -код состояния.

19.6.3.3. Редко используемые параметры и обработчики

Следующие параметры используются довольно редко. Некоторые из них являются параметрами, которые вам едва ли придется устанавливать, а другие определяют обработчики для тех, кому потребуется изменить порядок обработки Ajax-запросов, используемый в библиотеке jQuery по умолчанию.

<b>async</b>

Запросы HTTP по своей природе являются асинхронными. Однако объект

<b>XMLHttpRequest</b>
дает возможность заблокировать выполнение сценария до получения ответа. Если присвоить этому параметру значение false, библиотека jQuery будет блокировать работу сценария. Данный параметр не влияет на значение, возвращаемое функцией
<b>jQuery.ajax():</b>
она всегда возвращает объект
<b>XMLHttpRequest</b>
, если он используется. При выполнении синхронных запросов вы можете самостоятельно извлекать ответ сервера и код состояния HTTP из объекта
<b>XMLHttpRequest</b>
или определить функцию обратного вызова complete (как в случае асинхронных запросов), чтобы получить разобранный ответ и код состояния jQuery.

<b>dataFilter</b>

Этот параметр определяет функцию фильтрации или предварительной обработки данных, возвращаемых сервером. В первом аргументе ей будут передаваться необработанные данные, полученные от сервера (либо в виде строки, либо в виде объекта

<b>Document</b>
, при запросе XML-документа), а во втором аргументе - значение параметра
<b>dataType</b>
. Эта функция должна возвращать значение, которое будет использоваться вместо ответа сервера. Обратите внимание, что функция
<b>dataFilter</b>
вызывается перед разбором данных в формате JSON или перед выполнением сценария. Кроме того, отметьте, что
<b>dataFilter</b>
не вызывается при выполнении междоменных запросов данных типов «script» и «jsonp».

<b>jsonp</b>

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

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