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

jQuery AJAX

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

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

jQuery синтаксис:

Синтаксис 1.5:
$.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

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

<!DOCTYPE html>
<html>
	<head>
		<title>Использование функции $.ajaxPrefilter()</title>
		<script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.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()
jQuery AJAX