Spec-Zone.ru › jQuery

jQuery.ajaxPrefilter()

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

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

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

    • dataTypes
      Тип: Строка
      Необязательная строка, содержащая один или несколько типов данных, разделенных пробелом
    • handler
      Тип: Функция( Объект options, Объект originalOptions, jqXHR jqXHR )
      Обработчик для установки значений по умолчанию для будущих запросов 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, будут к нему применены.

© The jQuery Foundation and other contributors
Licensed under the MIT License.
https://api.jquery.com/jQuery.ajaxPrefilter

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API