русский  עברית
tadam logo
Нашли ошибку в тексте?
Отметьте её курсором и нажмите
Ctrl + Enter
Проверка орфографии Xhtml.co.il
Orphus system
Рассылка
Присоединитесь к списку рассылки для получения последних новостей
Имейл
Имя и фамилия

jQuery.ajax( опции )

Возвращает: XMLHttpRequest
Описание: Выполняет асинхронную просьбу HTTP (Ajax).

Аргументы

jQuery.ajax( url, [ опции ] )

Добавлена в версию: 1.5
Строка, содержащая URL в который сделаный запрос посылается.
опции
ключ/значение
Набор пар ключ/значение для конфигурирования запроса AJAX. Все опции опциональны, обязательных нет. Значение по умолчанию можно выставить для любой опции используя метод $.ajaxSetup(). Смотрите ниже jQuery.ajax( опции ) для полного списка опций.

jQuery.ajax( опции )

Добавлена в версию: 1.0
опции
ключ/значение
Набор пар ключ/значение для конфигурирования запроса AJAX. Все опции опциональны, обязательных нет. Значение по умолчанию можно выставить для любой опции используя метод $.ajaxSetup().
acceptsMap
Значение по умолчанию: зависит от DataType
Тип содержимого, отправленный в запросе заголовка, который указывает серверу, какой ответ он будет принимать по возвращению. Если настройкам необходима модификация, рекомендуется делать это единожды в методе $.ajaxSetup().
Значение по умолчанию: true
По умолчанию, все запросы отсылаются асинхронно (т.е. значение true). Если Вам необходимо посылать запросы синхронно, установите данную опцию в false. Обратите внимание, что синхронные запросы могут на время выполнения запроса заблокировать браузер.
beforeSend(XMLHttpRequest)
Функция для модификации объекта XMLHttpRequest перед отправкой. Используйте её для установки пользовательских заголовков и т.д. В качестве аргумента передается XMLHttpRequest. Это событие Ajax. Для отмены запроса следует возвратить false в данной функции.
Значение по умолчанию: true, false для dataType 'script' и 'jsonp'
Добавлено в jQuery 1.2, чтобы отключить кеширование браузером запрашиваемых Вами страниц, установите значение этой опции в false.
complete(XMLHttpRequest, textStatus)
Функция, которая исполняется всякий раз после завершения запроса AJAX (после того, как выполнились success и error). В качестве аргументов функция принимает объект XMLHttpRequest и строку, описывающую тип запроса. Это событие Ajax.
contents(добавлен в 1.5)
Карта пар строка/регулярное выражение, которые определяют, как jQuery будет анализировать ответ, с учетом его типа контента.
contentType
Значение по умолчанию: 'application/x-www-form-urlencoded'
При отсылке данных на сервер, указывайте тип данных. По умолчанию: «application/x-www-form-urlencoded», что подходит для большинства случаев. Если вы явно передаете контентный тип в $.ajax(), то он всегда будет отправлен на сервер (даже если данные не были отправленны).
context
Этот объект будет сделан в контексте всех Ajax связанных обратных вызовов. Например, указание элемента DOM в зависимости от контекста сделает контекст для полного обратного запроса, например так:
$.ajax({ url: "test.html", context: document.body, success: function(){
        $(this).addClass("done");
      }});
converters(добавлен в 1.5)
Значение по умолчанию: {"* text": window.String, "text html": true, "text json": jQuery.parseJSON, "text xml": jQuery.parseXML}
Карта преобразователей dataType-to-dataType. Значением каждого преобразователя является функция, которая возвращает преобразованное значение ответа
crossDomain(добавлен в 1.5)
Значение по умолчанию: false для запросов с того же домена, true для кросс-доменных запросов
Если вы хотите заставить crossDomain запрос (например, JSONP) на том же домене, установите значение crossDomain в true. Это позволит, например, произвести серверные перенаправления на другой домен
Данные, которые отсылаются на сервер. Если данные не являются строкой, то они конвертируются в строку запроса. Для запросов типа GET данные прикрепляются к URL. Для предотвращения этого, используйте опцию processData. Объект должен состоять из пар ключ/значение. Если значение представляет собой массив, то jQuery упорядочивает значения, принадлежащие одному ключу, например, {foo:["bar1", "bar2"]} превращается в ‘&foo=bar1&foo=bar2′.
dataFilter(данные, тип)
Функция, используемая для обработки «сырых» данных ответа XMLHttpRequest. Эта функция предназначена для предварительной обработки ответа. Вам следует возвращать именно обработанные данные. В качестве аргументов функция получает «сырые» данные от сервера и параметр ‘dataType’.
dataType
Значение по умолчанию: Интеллектуальные предположения (xml, json, script, или html)
Тип данных, который Вы ожидаете от сервера. Если не указано никакого типа, то jQuery укажет его самостоятельно (либо responseXML либо responseText), отталкиваясь от типа MIME ответа (XML MIME тип произведет XML, в 1.4 JSON произведет объект JavaScript, в 1.4 сценарий будет выполнять сценарий, и все остальное будет возвращено в виде строки). Доступные типы (результат, передающийся в качестве первого аргумента Вашей функции success):

  • "xml": Возвращает документ XML, который может обрабатываться посредством jQuery.
  • "html": Возвращает текст HTML как простой текст; включая теги script.
  • "script": Расценивает ответ как JavaScript и возвращает его как простой текст. Отключает кеширование, если не используется опция «cache». Примечание: удаленные (не в пределах одного домена) запросы POST будут изменены в GET.
  • "json": Расценивает ответ как JSON и возвращает как объект JavaScript. В jQuery 1.4 анализ JSON сделан строгим оборазом, любой плохо сформированный JSON будет отклонён и выдается сообщение об ошибке.
  • "jsonp": Загружает данные в JSON используя JSONP. При этом добавляется «?callback=?» в конец ссылки для указания функции. (Добавлено в jQuery 1.2)
  • "text": Строка простого текста (plain text).
error(XMLHttpRequest, textStatus, errorThrown)
Функция, которая исполняется всякий раз после неудачного запроса AJAX. Функция принимает три аргумента: объект XMLHttpRequest, строку, описывающую тип случившейся ошибки и необязательный объект «исключения». Возможные значения для второго аргумента (вместе с null): «timeout», «error», «notmodified» и «parsererror». Это событие Ajax.
Значение по умолчанию: true
Определяет, нужно-ли вызывать глобальные обработчики событий AJAX для данного запроса. По умолчанию true. Для предотвращения запуска глобальных обработчиков таких, как ajaxStart или ajaxStop, установите значение данной опции в false. Это может пригодиться для управления различными событиями Ajax.
headers(добавлен в 1.5)
Значение по умолчанию: {}
Карта пар дополнительного заголовка ключ/значение для отправки вместе с запросом. Этот параметр устанавливается, прежде чем функция beforeSend вызывается, поэтому любые значения в настройке заголовков могут быть перезаписаны внутри функции beforeSend.
Значение по умолчанию: false
Определяет, что запрос является успешным только тогда, когда ответ изменился с момента последнего запроса. Принцип действия основан на проверке заголовка Last-Modified. По умолчанию false, заголовок игнорируется.В jQuery 1.4 эта техника также проверяет если 'etag' указан сервером, чтобы поймать неизмененные данные.
isLocal(добавлен в 1.5.1)
Значение по умолчанию: зависит от расположения текущего протокола
Определяет текущие условия в качестве "местных", (например, файловая система), даже если jQuery не распознает их как таковые по умолчанию. Следующие протоколы в настоящее время признаны местными: файл, *- расширение и виджет. Если установка isLocal нуждается в модификации, рекомендуется делать это единожды в методе $.ajaxSetup().
Переопределяет имя функциив в запросе jsonp. Данное значение подставляется вместо ‘callback’ в строке запроса (например, «myurl?callback=?») в URL, для запросов типа GET, и в данных, для запросов типа POST. Таким образом, {jsonp:’onJsonPLoad’} трансформируется в ‘onJsonPLoad=?’ при передаче на сервер.
jsonpCallback
Определяет имя функции обратного вызова для запроса jsonp. Это значение будет использоваться вместо рандомального имени автоматически сгенерированного jQuery. Желательно разрешить jQuery генерировать уникальное имя, так как это позволит легче управлять запросами и обеспечивать функции обратного вызова и обработку ошибок. Вы можете определить функцию обратного вызова когда пожелаете лучшее кеширование браузером запросов GET.
mimeType(добавлен в 1.5.1)
Тип mime, чтобы переопределить тип mime XHR.
password
Пароль, который будет использован для HTTP запроса авторизации.
Значение по умолчанию: true

По умолчанию, данные, переданные в параметр data в качестве объекта (с технической точки зрения, что-либо кроме строки), будут обработаны и преобразованы в строку запроса, для соответствия типу данных по умолчанию — «application/x-www-form-urlencoded». Если необходимо отослать документ DOM или другие специфические данные, то установите данную опцию в false.

scriptCharset
Только для запросов типа GET со значениями ’jsonp’ или ’script’ в качестве dataType. Заставляет интерпретировать запрос как конкретную кодировку. Необходимо для нахождения различий в локальных и удаленных данных.
statusCode (добавлен в 1.5)
Карта числовых кодов HTTP и функций для вызова при ответе имеет соответствующий код. Например, следующим будет предупреждение в случае статуса ответа 404:
$.ajax({
  statusCode: {
    404: function() {
      alert('page not found');
    }
  }
});
Если запрос успешный, функции статуса кода принимают такие же параметры, как обратный вызов в случае успеха; если он приводит к ошибке, они принимают те же параметры как и обратный вызов в случае ошибки.
success(данные, статусТекста, XMLHttpRequest)
Функция, которая исполняется всякий раз после удачного завершения запроса AJAX. Функция принимает два аргумента: данные от сервера, отформатированные в соответствие с параметром ‘dataType’, и строку, описывающую текущий статус. Это событие Ajax.
timeout
Устанавливает локальное время ожидания для запроса (в миллисекундах). Данная опция переназначает глобальное время ожидания, установленное при помощи $.ajaxSetup. Например, можно пользоваться этим методом для того, чтобы назначить определенному запросу более длительное время ожидания, чем всем другим запросам, которым вы установили время на одну секунду. Смотрите $.ajaxSetup() для глобального времени.
Установите значение в true если вы хотите использовать традиционный стиль упорядочивания параметров.
Значение по умолчанию: 'GET'

Тип запроса («POST» или «GET»), по умолчанию «GET». Примечание: другие методы такие, как PUT и DELETE, также можно указывать здесь, но они поддерживаются не всеми браузерами.

Значение по умолчанию: Текущая страница

Строка содержащяя URL-на который посылается запрос.

username
Имя пользователя, которое будет использовано для HTTP запроса авторизации.
Функция для создания объекта XMLHttpRequest. Если доступно, то создается ActiveXObject (IE), в ином случае XMLHttpRequest. Можно создать свою собственную усовершенствованную реализацию объекта XMLHttpRequest. Это недоступно в jQuery версии 1.2.6 и более ранних.
xhrFields(добавлен в 1.5.1)

Карта пар имяПоля-значениеПоля для установки на родной объект XHR. Например, вы можете использовать его для установки на withCredentials в true для кросс-доменных запросов в случае необходимости.

$.ajax({
   url: a_cross_domain_url,
   xhrFields: {
      withCredentials: true
   }
});

В jQuery 1.5, свойство withCredentials не распространяется на родной XHR и, таким образом CORS запросы, будут игнорировать этот флаг. По этой причине, мы рекомендуем использовать jQuery 1.5.1+.

Функция $.ajax() лежит в основе запросов Ajax посланных jQuery. Обычно не нужно напрямую вызывать эту функцию, в то время как несколько альтернатив более высокого уровня как $.get() и .load() доступны и легче в использовании. Если требуются менее общие параметры, не смотря на то что, $.ajax() может использоваться более гибко.

Проще всего, функция $.ajax() может быть вызвана без аргументов:

$.ajax();

Примечание: Настройки по умолчанию могут быть глобальными используя функцию $.ajaxSetup().

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

Объект jqXHR

Объект jQuery XMLHttpRequest (jqXHR) возвращается с помощью $.ajax() начиная с jQuery 1.5, является расширением собственного объекта XMLHttpRequest браузера. Например, он включает свойства responseText и responseXML, также как и метод getResponseHeader(). Когда транспортный механизм нечто иное, чем XMLHttpRequest (например, тег скрипта для запроса JSONP) объект jqXHR имитирует основную функциональность XHR, где возможно.

Начиная с jQuery 1.5.1, объект jqXHR включает метод overrideMimeType() (он доступен также в jQuery 1.4.x, но был временно удален в jQuery 1.5). Метод .overrideMimeType() может быть использован в функции обратного вызова beforeSend(), например, для изменения типа содержимого заголовка ответа:

$.ajax({
  url: 'http://fiddle.jshell.net/favicon.png',
  beforeSend: function( xhr ) {
    xhr.overrideMimeType( 'text/plain; charset=x-user-defined' );
  },
  success: function( data ) {
    if (console && console.log){
      console.log( 'Sample of data:', data.slice(0,100) );
    }
  }
});

Объект jqXHR, возвращенный с помощью $.ajax() реализовывает интерфейс Promise, давая им все свойства, методы и поведение Promise (смотрите Отсроченный объект для подробной информации). Для удобства и соответствия имен функций обратного вызова, используемых в $.ajax(), jqXHR также представляет методы .error(), .success(), и .complete(). Эти методы принимают аргумент функции, которая вызывается при завершении запроса $.ajax(), и функция получает те же аргументы, соответственно названию функции обратного вызова $.ajax(). В jQuery 1.5 это позволяет назначать несколько обратных вызовов на один запрос, и даже назначить функции обратного вызова после завершения запроса. (Если запрос уже завершен, функция обратного вызова будет немедленно вызвана.)

// Assign handlers immediately after making the request,
// and remember the jqxhr object for this request
var jqxhr = $.ajax({ url: "example.php" })
    .success(function() { alert("success"); })
    .error(function() { alert("error"); })
    .complete(function() { alert("complete"); });

// perform other work here ...

// Set another completion function for the request above
jqxhr.complete(function(){ alert("second complete"); });

Для обратной совместимости с XMLHttpRequest, объект jqXHR представляет следующие свойства и методы:

  • readyState
  • status
  • statusText
  • responseXML и/или responseText, когда основной запрос получен с XML и/или текстом, соответственно
  • setRequestHeader(имя, значение), которая отличается от стандартных заменяя старое значение на новое, а не объединением нового и старого значения
  • getAllResponseHeaders()
  • getResponseHeader()
  • abort()

Не предоставляется механизм onreadystatechange, тем не менее, success, error, complete и statusCode охватывают все мыслимые требования.

Примечание: jqXHR.success() и jqXHR.error() будут устаревшими в jQuery 1.8 в пользу использования jqXHR.done() и jqXHR.fail(). Это позволит избежать путаницы в отношении имен функций обратного вызова, которые в идеале должны быть использованы.

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

Опции beforeSend, error, dataFilter, success и complete принимают функции обратного вызова, которые вызываются в соответствующие моменты времени:

  1. beforeSend вызвается до того как запрос отправлен, и посылается объект XMLHttpRequest как параметр.
  2. error вызывается если запрос не удался. Он посылает объект XMLHttpRequest, строку указывающую на тип ошибки, и надлежащий объект исключения.
  3. dataFilter вызывается при успешном выполнении. Он передает полученные данные и значение dataType, и должен вернуть (возможно изменить) данные для передачи в success.
  4. success вызывается, если запрос успешно выполнен. Он передает полученные данные, строку включающую удачный код, и объект XMLHttpRequest.
  5. complete вызывается когда запрос закончен, будь то провал или успех. Он передает объект XMLHttpRequest, а также строку, содержащую success или код ошибки.
Чтобы воспользоваться возвращенным HTML, можно запустить обработчик success:
$.ajax({
  url: 'ajax/test.html',
  success: function(data) {
    $('.result').html(data);
    alert('Load was performed.');
  }
});
Такой простой пример, как правило, будет лучше обслуживаться с помощью .load() или $.get().

Типы данных

Функция $.ajax() опирается на сервер, чтобы предоставить информацию о полученных данных. Если сервер возвращает данные как XML, результат может быть прочитан с помощью нормальных методов XML или селекторов jQuery. Если зафиксирован другой тип, как HTML в примере выше, данные будут предоставленны как текст.

Различные обработки данных могут быть достигнуты с использованием опции dataType. Кроме простого xml, dataType может быть html, json, jsonp, script, или text.

Типы text и xml возвращают данные без обработки. Данные просто передаются обработчику success, либо через responseText или свойство responseHTML объекта XMLHttpRequest, соответственно.

Примечание: Мы должны быть уверенны, что тип MIME сообщенный веб-сервером, совпадает с нашим выбором dataType. В частности, XML должен быть объявлен сервером как text/xml или application/xml для устойчивых результатов.

Если html назначен, любой встроенный JavaScript внутрь источника данных будет выполнен до того как HTML будет возвращен как строка. Подобным образом, script выполнит JavaScript, который возвращен с сервера, затем возвращается сам сценарий как текстовые данные.

Тип json обрабатывает полученные данные файла как объект JavaScript и возвращает созданный объект как результат данных. Чтобы зделать это, он использует JSON.parse() когда браузер поддерживает ее; в противном случае он использует Function constructor. Данные JSON удобны для передачи структурированных данных таким образом, который краток и легок для обработки JavaScript. Если полученные данные файла существуют на удаленном сервере, тип jsonp может быть использован вместо этого. Этот тип вызовет параметр строки запроса callback=?, который приложен к URL; сервер должен предварить данные JSON с именем функции обратного вызова для формирования корректного запроса JSONP. Если указанное имя параметра необходимо вместо callback, оно может быть указанно с опцией jsonp для $.ajax().

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

Когда данные поступают с удаленного сервера ( который дает возможность использовать типы данных script или jsonp), операция выполняется используя тег <script> вместо объекта XMLHttpRequest. В этом случае, ни один объект XMLHttpRequest не будет возвращен из $.ajax(), также не один не будет послан обработчику функций, такому как beforeSend.

Посылка данных на сервер

По умолчанию, запросы Ajax посылаются используя метод GET HTTP. Если необходим метод POST, этот метод может быть определен с помощью установки значения для опции type. Эта опция влияет на то как содержимое data будет отправленно на сервер.

Опция data может включать как строку запроса формы key1=value1&key2=value2, так и карту формы {key1: 'value1', key2: 'value2'}. Если используется последнее, данные будут конвертироваться в строку запроса до их посылки. Процесс можно обойти установив processData в false. Процесс может быть нежелательным если мы хотим послать объект XML на сервер; в этом случае, мы бы также хотели изменить опцию contentType из application/x-www-form-urlencoded в более соответсвующий тип MIME.

Дополнительные опции

Опция global пердотвращает использование .ajaxSend() зарегистрированными обработчиками, .ajaxError(), и аналргичные методы от запуска, когда эта просьба вызывает их. Это может быть полезно, например, подавить погрузку показателя, , который был реализован с .ajaxSend() если запросы являются частыми и краткими. Смотри описания этих методов ниже для более подробной информации.

Если сервер выполняет HTTP-аутентификации, прежде чем предоставить ответ, имя пользователя и пароль пары могут быть отправлены через опции username и password.

Запросы Ajax ограничены во времени, поэтому ошибки могут быть перехвачены и обработаны, чтобы обеспечить лучший пользовательский опыт. Запрос тайм-аутов, как правило, либо оставлены на своих значениях по умолчанию или установленны в качестве глобального значения по умолчанию с помощью $.ajaxSetup() вместо того, чтобы переопределить конкретные запросы с опцией timeout.

По умолчанию, запросы всегда выдаются, но браузер может предоставлять результаты из кэша. Чтобы запретить использование результаты из кэша, установите cache в false. Чтобы вызвать просьбу с сообщением о провале если активы не были изменены с момента последнего запроса, установите ifModified в true.

scriptCharset позволяет набору символов быть четко указанным для просьб, которые используют тег <script> (то есть, тип script или jsonp). Это полезно, если сценарий и главная страница имеют разные наборы символов.

Первая буква в Ajax расшифровывается как "асинхронный", это означает, что операция происходят параллельно и порядок выполнения не гарантируется. Опция async в $.ajax() по умолчанию установленна в true, показывает, что код может продолжаться после того, как сделан запрос. Установка этой опции в false (и, таким образом делая вызов больше не асинхронным) настоятельно не рекомендуется, так как это может быть причиной того, что браузер перестанет отвечать на запросы.

Функция $.ajax() возвращает объект XMLHttpRequest, который он создает. Обычно jQuery управляет созданием этого объекта внутри, а пользовательская функция для изготовления одной единицы может быть определенна используя опцию xhr. Возвращаемый объект в целом можно отбросить, но это обеспечит более низкий уровень интерфейса для наблюдения и манипулирования запросом. В частности, вызов .abort() на объект остановит просьбу до ее завершения.

Примеры

Пример 1

Загружает и исполняет скрипт JavaScript.
$.ajax({
   type: "GET",
   url: "test.js",
   dataType: "script"
 });

Пример 2

Загружает некоторые данные на сервер и оповещает пользователя по окончанию операции.
$.ajax({
   type: "POST",
   url: "some.php",
   data: "name=John&location=Boston",
   success: function(msg){
     alert( "Data Saved: " + msg );
   }
 });

Пример 3

Получает последнюю версию страницы HTML.
$.ajax({
  url: "test.html",
  cache: false,
  success: function(html){
    $("#results").append(html);
  }
});

Пример 4

Синхронно загружает данные. Блокирует браузер на время выполнения запроса. Лучше заблокировать взаимодействие с пользователем с помощью других средств когда синхронизация требуется.
var html = $.ajax({
  url: "some.php",
  async: false
 }).responseText;

Пример 5

Отсылает документ XML в качестве данных на сервер. Автоматическое преобразование данных запрещено путем установки опции processData в false.
var xmlDocument = [create xml document];
 $.ajax({
   url: "page.php",
   processData: false,
   data: xmlDocument,
   success: handleResponse
 });

Пример 6

Посылает идентификатор в качестве данных на сервер, сохраняет данные и оповещает пользователя по окончанию операции.
bodyContent = $.ajax({
      url: "script.php",
      global: false,
      type: "POST",
      data: ({id : this.getAttribute('id')}),
      dataType: "html",
      success: function(msg){
         alert(msg);
      }
   }
).responseText;
Была ли эта информация полезной?
   

Комментарии