jQuery.ajaxPrefilter( [dataTypes ], handler )Возвращает: undefined
Описание: Обработка пользовательских опций Ajax или изменение существующих опций перед отправкой каждого запроса и перед их обработкой $.ajax().
-
версия добавлена: 1.5jQuery.ajaxPrefilter( [dataTypes ], handler )
- dataTypesТип: СтрокаНеобязательная строка, содержащая один или несколько типов данных, разделенных пробелом
- handlerОбработчик для установки значений по умолчанию для будущих запросов Ajax.
-
Типичная регистрация префильтра с использованием $.ajaxPrefilter() выглядит следующим образом:
$.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
// Modify options, control originalOptions, store jqXHR, etc
}); где:
-
options— опции запроса -
originalOptions— опции, предоставленные методу$.ajax(), не изменённые и, следовательно, без значений по умолчанию изajaxSettings -
jqXHR— объект jqXHR запроса
Префильтры идеально подходят, когда необходимо обрабатывать пользовательские опции. Например, приведённый ниже код, вызов $.ajax() автоматически прервёт запрос по тому же URL, если пользовательская опция abortOnRetry установлена в true:
var currentRequests = {};
$.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
if ( options.abortOnRetry ) {
if ( currentRequests[ options.url ] ) {
currentRequests[ options.url ].abort();
}
currentRequests[ options.url ] = jqXHR;
}
}); Префильтры также могут использоваться для изменения существующих опций. Например, следующий код перенаправляет запросы между доменными зонами через https://mydomain.net/proxy/:
$.ajaxPrefilter(function( options ) {
if ( options.crossDomain ) {
options.url = "https://mydomain.net/proxy/" + encodeURIComponent( options.url );
options.crossDomain = false;
}
}); Если необязательный аргумент dataTypes указан, префильтр будет применяться только к запросам с указанными типами данных. Например, следующий код применяет префильтр только к запросам JSON и script:
$.ajaxPrefilter( "json script", function( options, originalOptions, jqXHR ) {
// Modify options, control originalOptions, store jqXHR, etc
}); Метод $.ajaxPrefilter() также может перенаправить запрос на другой тип данных, вернув этот тип данных. Например, следующий код устанавливает запрос как "script", если URL имеет определённые свойства, определённые в пользовательской функции isActuallyScript():
$.ajaxPrefilter(function( options ) {
if ( isActuallyScript( options.url ) ) {
return "script";
}
}); Это обеспечит не только то, что запрос рассматривается как "script", но и то, что все префильтры, специально прикреплённые к типу данных script, будут к нему применены.