jQuery.active函数

时间:2010-06-30 10:11:46

标签: jquery

我试图找到有关以下jQuery函数的更多信息:

jQuery.active

描述了测试服务器的活动连接数,并在连接数为零时评估为真。

我在jQuery网站上找不到关于此功能的任何信息,并且想知道是否有人知道我可以在哪里。

2 个答案:

答案 0 :(得分:157)

这是jQuery在内部使用的变量,但没有理由隐藏,所以它可以使用。只是抬头,it becomes jquery.ajax.active next release。没有文档,因为它是公开的而不是官方API,实际上很多事情都是这样的,例如jQuery.cache(所有jQuery.data()都去了。)

我在这里猜测库中的实际用法,似乎只支持$.ajaxStart()$.ajaxStop()(我将进一步解释),但他们只关心当请求开始或停止时它是否为0。但是,由于没有理由隐藏它,因此您可以看到当前正在进行的同时 AJAX请求的实际数量。


当jQuery启动AJAX请求时,this happens

if ( s.global && ! jQuery.active++ ) {
  jQuery.event.trigger( "ajaxStart" );
}

这是导致$.ajaxStart()事件触发的原因,连接数从0变为1(jQuery.active++在此之后不为0,!0 == true),这表示当前同时请求中的第一个已启动。同样的事情发生在另一端。当AJAX请求停止时(由于a beforeSend abort via return falseajax call complete function runs):

if ( s.global && ! --jQuery.active ) {
  jQuery.event.trigger( "ajaxStop" );
}

这是导致$.ajaxStop()事件触发的原因,请求数下降到0,表示最后一次同时 AJAX调用已完成。那边的other global AJAX handlers火也在那里。

答案 1 :(得分:19)

对于任何尝试将jQuery.active与JSONP请求一起使用的人(就像我一样),你需要启用它:

jQuery.ajaxPrefilter(function( options ) {
    options.global = true;
});

请记住,您需要在JSONP请求上超时以捕获失败。