Как получить запрошенный URL-адрес из функции ajaxStart?

Могу ли я получить запрошенный URL-адрес от ajaxStart? Я хочу выполнить общее действие для всех запросов ajax, чтобы принять несколько запросов.

Ответ 1

Нет, внутри ajaxStart у вас нет доступа к объекту jqXHR или ajaxOptions:

// Watch for a new set of requests
if ( s.global && jQuery.active++ === 0 ) {
  jQuery.event.trigger( "ajaxStart" );
}

Как вы можете видеть, аргументы ajaxStart не передаются. Контрастируйте это с помощью ajaxSend:

// Send global event
if ( fireGlobals ) {
  globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
}

Если объект jqXHR передается в качестве аргумента вместе с настройками:

$(document).ajaxSend(function(evt, request, settings) {
  alert("Starting request at " + settings.url + ".");
});

Также см. этот ответ для лучшего понимания этого дизайна.

Ответ 2

Вы не можете получить запрошенный url из функции ajaxstart, вы можете получить только функцию ajaxsend, потому что функция ajaxsend относительно конкретного запроса, но ajaxstart не

$( document ).ajaxSend(function( event, jqxhr, settings ) {
  if ( settings.url == "ajax/test.html" ) {
    $( ".log" ).text( "Triggered ajaxSend handler." );
  }
});