jQuery.ajaxPrefilter()


jQuery.ajaxPrefilter( [dataTypes ], handler )Возвращает: undefined

Описание: Обрабатывает пользовательские Ajax параметры или изменяет существующие параметры прежде чем каждый запрос будет отправлен и прежде чем они будут обработаны методом $.ajax().

  • Добавлен в версии: 1.5jQuery.ajaxPrefilter( [dataTypes ], handler )

    • dataTypes
      Тип: String
      Необязательная строка с одним или более типами данных (разделенные пробелом).
    • handler
      Тип: Function( PlainObject параметры, PlainObject оригинальные параметры, jqXHR объект jqXHR )
      Обработчик для установки значений по умолчанию для будующих Ajax запросов.

Обычно регистрация префильтра при помощи $.ajaxPrefilter() выглядит следующим образом:

1
2
3
$.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
// Modify options, control originalOptions, store jqXHR, etc
});

где:

  • options параметры запроса
  • originalOptions оригинальные параметры запроса предоставленные методом $.ajax() без изменений и значений по умолчанию от метода ajaxSettings
  • jqXHR объект jqXHR для данного запроса

Префильтры являются идеальным решением, когда пользовательские параметры должны быть обработаны. Приведенный ниже коде, например, вызок метода $.ajax() будет автоматически прерывать запрос на тот же URL если значение пользовательского параметра abortOnRetry равно true:

1
2
3
4
5
6
7
8
9
10
var currentRequests = {};
$.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
if ( options.abortOnRetry ) {
if ( currentRequests[ options.url ] ) {
currentRequests[ options.url ].abort();
}
currentRequests[ options.url ] = jqXHR;
}
});

Префильты также могут быть использованы для изменения существующих параметров. Например, использование прокси http://mydomain.net/proxy/ при использовании кросс-доменных запросов:

1
2
3
4
5
6
$.ajaxPrefilter(function( options ) {
if ( options.crossDomain ) {
options.url = "http://mydomain.net/proxy/" + encodeURIComponent( options.url );
options.crossDomain = false;
}
});

Если необязательный аргумент dataTypes установлен, то префильтр будет применен для запросов с соответствующим типом данных. Например, в следующем коде префильтр работает только для JSON и script запросов:

1
2
3
$.ajaxPrefilter( "json script", function( options, originalOptions, jqXHR ) {
// Modify options, control originalOptions, store jqXHR, etc
});

Метод $.ajaxPrefilter() может также перенаправить запрос на другой тип данных отличающийся от типа данных ответа. Например, следующий код устанавливает запрос как "script" если URL-адрес имеет какие то особенности определенные в пользовательской функции isActuallyScript():

1
2
3
4
5
$.ajaxPrefilter(function( options ) {
if ( isActuallyScript( options.url ) ) {
return "script";
}
});

Это обеспечит работу префильтра не только для запроса "script", но и также все указанные типы данных при регистрации префильтра.