17

我可以从中获取请求的 URLajaxStart吗?我想为所有 ajax 请求执行一个通用操作,接受一些请求。

4

2 回答 2

24

不,在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 + ".");
});

另请参阅答案以更好地了解此设计。

于 2012-10-01T00:41:36.537 回答
11

您无法从 ajaxstart 函数获取请求的 url,您只能使用 ajaxsend 函数获取,因为 ajaxsend 函数针对特定请求但 ajaxstart 不是

$( document ).ajaxSend(function( event, jqxhr, settings ) {
  if ( settings.url == "ajax/test.html" ) {
    $( ".log" ).text( "Triggered ajaxSend handler." );
  }
});
于 2015-08-19T09:02:37.847 回答