jQuery функция $.ajaxPrefilter()

Определение и применение

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

jQuery синтаксис:

Синтаксис 1.5:

JavaScript
$.ajaxPrefilter( handler )
$.ajaxPrefilter( dataTypes, handler )

dataTypes - String

handler - Function( PlainObject options, PlainObject originalOptions, jqXHR jqXHR )

Добавлен в версии jQuery

1.5

Значения параметров

Параметр Описание
dataTypes Строка, содержащая один, или несколько разделенных пробелами типов данных. Если параметр задан,фильтр будет осуществляться только на запросы с указанными типами данных. Необязательный параметр.
Основные типы:
  • "xml" - XML документ, который может быть обработан с помощью jQuery.
  • "html" - HTML как обычный текст.
  • "script" - данные в формате JavaScript.
  • "json" - данные в формате JSON.
  • "jsonp" - данные в формате JSON, используя при этом формат загрузки JSONP.
  • "text" - обычная текстовая строка.
  • несколько значений - значения разделяются пробелом.
handler Задает функцию для установки значений по умолчанию для будущих запросов AJAX. Функция принимает следующие параметры:
  • options - объект, содержащий параметры текущего запроса AJAX.
  • originalOptions - объект, содержащий параметры запроса, предоставленные функцией $.ajax() без изменений и значений по умолчанию.
  • jqXHR - содержит объект XMLHTTPRequest

Совместимость с jQuery 4.0

В jQuery 4.0 предфильтры учитывают встроенную поддержку двоичных данных и FormData. Если предфильтр зависит от сериализации data, проверьте его при переходе: не считайте, что любое значение data заранее превращено в строку.

Пример использования

HTML
<!DOCTYPE html>
<html>
  <head>
    <title>Использование функции $.ajaxPrefilter()</title>
    <script src="https://code.jquery.com/jquery-4.0.0.min.js"></script>
    <script>
      $(document).ready(function () {
        $.ajaxPrefilter(function (options, originalOptions, jqXHR) {
          // устанавливаем фильтр для AJAX запросов с любым типом данных
          if (options.url == "ya.ru" && originalOptions.dataType == "script") {
            // если текущий запрос к url "ya.ru" и функция $.ajax() предоставляет тип данных script
            jqXHR.abort(); // прерываем AJAX запрос
            console.log(options); // выводим в консоль  объект, содержащий параметры текущего запроса
            console.log(originalOptions); // выводим в консоль  объект, содержащий параметры запроса, предоставленные функцией $.ajax()
          } else {
            console.log("it's ok");
          }
        });
        $.ajax({
          url: "ya.ru", // url на который отправляется AJAX запрос
          dataType: "script", // тип данных
          success: function () {
            // если запрос успешен вызываем функцию
            console.log("Hello");
          },
        });
      });
    </script>
  </head>
  <body> </body>
</html>

В этом примере с использованием jQuery функции $.ajaxPrefilter() мы установили фильтр для AJAX запросов с любым типом данных, который проверяет если текущий запрос к URL "ya.ru" и функция $.ajax() предоставляет тип данных "script", то вызываем метод abort() объекта jqXHR, который прерывает текущий AJAX запрос. После этого мы выводим в консоль информацию об объектах, содержащих параметры текущего запроса и параметры запроса, предоставленные функцией $.ajax().

Обратите внимание, что параметр originalOptions функции $.ajaxPrefilter() содержит только те параметры запроса, которые были указаны в функции $.ajax(), а именно в объекте определяющем параметры запроса. Для информации, если мы используем следующий синтаксис функции $.ajax(): $.ajax( url, {settings} ), то в этом случае параметр url не попадет в параметр originalOptions. Этот синтаксис был в введен в версии jQuery 1.5.

Результат нашего примера:

Пример использования jQuery функции $.ajaxPrefilter()
Пример использования jQuery функции $.ajaxPrefilter()