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

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

<b>jQuery.ajax()</b>
и все утилиты поддержки Ajax, описанные выше, теперь возвращают объект
<b>jqXHR</b>
. Этот объект имитирует прикладной интерфейс объекта
<b>XMLHttpRequest</b>
даже для запросов (например, выполняемых функцией
<b>$.getScript()</b>
), не использующих объект
<b>XMLHttpRequest</b>
. Кроме того, объект
<b>jqXHR</b>
определяет методы
<b>success()</b>
и
<b>error(),</b>
которые можно использовать для регистрации функций, вызываемых в случае успешного или неудачного завершения запроса. То есть вместо того чтобы передавать функцию обратного вызова функции
<b>jQuery.get(),</b>
например, ее можно зарегистрировать с помощью метода
<b>success()</b>
объекта
<b>jqXHR</b>
, возвращаемого этой утилитой:

<b>jQuery.get(&quot;data.txt&quot;)</b>

<b>     .success(function(data) { console.log(&quot;Получено &quot;, data): })</b>

<b>     .success(function(data) { process(data): });</b>

***********************************************

19.6.3.1. Часто используемые параметры

Ниже перечислены параметры, которые наиболее часто передаются функции

<b>jQuery.ajax():</b>

<b>type</b>

Определяет метод HTTP-запроса. По умолчанию имеет значение «GET». Другим наиболее часто используемым значением является «POST». Допускается указывать также другие методы HTTP-запросов, такие как «DELETE» и «PUT», но они поддерживаются не всеми броузерами. Обратите внимание, что имя этого параметра может вводить в заблуждение: он не имеет никакого отношения к типу данных в запросе или ответе, и для него лучше подошло бы имя «method».

<b>url</b>

URL-адрес загружаемых данных. При выполнении GET-запросов параметр data добавляется в конец этого URL-адреса. Библиотека jQuery может автоматически добавлять параметры в строку URL при выполнении JSONP-запросов и когда параметр cache имеет значение false.

<b>data</b>

Данные, добавляемые в конец URL-адреса (для GET-запросов) или отправляемые в теле запроса (для POST-запросов). Может быть строкой или объектом. Объекты обычно преобразуются в строки, как описывалось во врезке в разделе 19.6.2.2, однако имеются некоторые исключения, которые приводятся в описании параметра

<b>processData</b>
.

<b>dataType</b>

Определяет тип ожидаемых данных в ответе и способ их обработки библиотекой jQuery. Допустимыми значениями являются «text», «html», «script», «json», «jsonp» и «xml». Суть этих значений описана во врезке в разделе 19.6.2.3. Этот параметр не имеет значения по умолчанию. Если он не указан, библиотека jQuery проверит заголовок «Content-Type» ответа, чтобы определить, что делать с полученными данными.

<b>contentType</b>

Определяет HTTP-заголовок «Content-Type» запроса. По умолчанию имеет значение «application/x-www-form-urlencoded», которое обычно используется HTML-формами и большинством серверных сценариев. Если вы установили параметр

<b>type</b>
в значение «POST» и собираетесь отправить в теле запроса простой текст или XML-документ, вам должны также установить этот параметр.

<b>timeout</b>

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

<b>error</b>
с кодом состояния «timeout». По умолчанию параметр
<b>timeout</b>
имеет значение 0, которое означает, что выполнение запроса будет продолжаться до его завершения и никогда не будет прервано.

<b>cache</b>

При выполнении GET-запросов, если этот параметр будет установлен в значение false, библиотека jQuery добавит параметр _= в строку URL или заменит существующий параметр с этим именем. В качестве значения этого параметра будет установлено текущее время (в виде количества миллисекунд). Это предотвратит использование кэша броузера, поскольку каждый раз, когда запрос будет выполняться, строка URL будет иной,

<b>ifModified</b>

Когда этот параметр имеет значение true, библиотека jQuery будет сохранять значения заголовков «Last-Modified» и «If-None-Match» ответов для каждого запрошенного URL-адреса и затем будет устанавливать эти заголовки во всех последующих запросах к тем же самым URL-адресам. Это предписывает серверу отправлять НТТР-ответ 304 «Not Modified», если содержимое по указанному URL-адресу не изменилось с момента последнего обращения. По умолчанию данный параметр не установлен и библиотека jQuery не сохраняет эти заголовки.

Библиотека jQuery преобразует НТТР-ответ 304 в код состояния «notmodified». Код «notmodified» не считается ошибкой и передается функции обратного вызова success вместо обычного кода состояния «success». То есть если вы устанавливаете параметр

<b>ifModified</b>
, вы также должны проверять код состояния в своей функции обратного вызова - если будет получен код состояния «notmodified», то первый аргумент функции (данные из ответа) будет иметь значение undefined. Обратите внимание, что в версии jQuery ниже 1.4 НТТР-ответ 304 интерпретировался как ошибка, и код состояния «notmodified» передавался функции обратного вызова error, а не success. Подробнее о кодах состояния рассказывается во врезке в разделе 19.6.1.

<b>global</b>

Этот параметр определяет, должна ли библиотека jQuery возбуждать события в ходе выполнения Ajax-запроса. По умолчанию имеет значение true. Присвойте этому параметру значение false, чтобы запретить все события, связанные с поддержкой архитектуры Ajax. (Полное описание событий приводится в разделе 19.6.4.) Имя этого параметра несколько обескураживает: он имеет имя «global», потому что обычно библиотека jQuery возбуждает события глобально, а не в конкретном объекте.

19.6.3.2. Функции обратного вызова

Следующие параметры определяют функции, вызываемые на разных стадиях в ходе выполнения Ajax-запроса. С параметром success вы уже знакомы: это функция обратного вызова, которая передается методам, таким как

<b>jQuery.getJS0N().</b>
Обратите внимание, что библиотека jQuery также посылает извещения в ходе выполнения Ajax-запроса в виде событий (если параметр global не был установлен в значение false).