jQuery.ajaxPrefilter()

Метод jQuery.ajaxPrefilter() используется для управления запросами до того, как они будут отправлены. Управление, в основном, заключается в редактировании параметров запросов.

Варианты использования

jQuery.ajaxPrefilter([типы_данных, ]обработчик)
Выполняет переданный обработчик перед отправкой ajax-запроса.
Необязательный параметр типы_данных позволяет отфильтровать запросы по типу данных, ожидаемых от сервера (перечисляются через пробел).
Обработчик может принимать три аргумента:
  1. Все параметры запроса.
  2. Параметры запроса, указанные при вызове $.ajax().
  3. jqXHR-объект.

Примеры

Метод $.ajaxPrefilter() можно использовать для управления пользовательскими настройками запросов. В примере ниже анализируется пользовательский параметр abortOnRetry. Если он имеет значение true, тогда новый запрос приводит к отмене всех предшествующих запросов на тот же URL:

var currentRequests = {};
 
$.ajaxPrefilter(function(options, originalOptions, jqXHR) {
  if (options.abortOnRetry) {
    if (currentRequests[options.url]) {
      currentRequests[options.url].abort();
    }
    currentRequests[options.url] = jqXHR;
  }
});

Следующий пример демонстрирует управление запросом с помощью встроенных параметров запроса. Если запрос указан как кроссдоменный, тогда он просто перенаправляется на новый URL:

$.ajaxPrefilter(function(options) {
  if (options.crossDomain) {
    options.url = 'http://your-server.ru/proxy/' + encodeURIComponent(options.url);
    options.crossDomain = false;
  }
});

Метод $.ajaxPrefilter() может изменить параметр dataType, вернув новое значение. Все запросы типа 'script' преобразуются в 'jsonp':

$.ajaxPrefilter('script', function() {
  return 'jsonp';
});