我试图找到有关以下jQuery函数的更多信息:
jQuery.active
描述了测试服务器的活动连接数,并在连接数为零时评估为真。
我在jQuery网站上找不到关于此功能的任何信息,并且想知道是否有人知道我可以在哪里。
答案 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 false
或ajax 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请求上超时以捕获失败。