2012-01-28 65 views

回答

18

你可以使用$.ajaxSetup()方法设置将适用于整个页面全局AJAX性能:

$.ajaxSetup({ 
    beforeSend: function() { 
     // show progress spinner 
    }, 
    complete: function() { 
     // hide progress spinner 
    } 
}); 
+0

完成!谢谢。 – LordZardeck 2012-01-28 07:58:28

+1

它会抓住那些不使用jQeury或那不可能的东西吗? – rain01 2013-05-09 11:53:06

+1

@ rain01,不,这只会捕获jQuery AJAX请求。 – 2013-05-09 12:09:31

2

尝试使用jQuery的ajaxStart事件

+1

我可能会用'ajaxSend',而不是因为它是触发所有的Ajax请求(VS仅一日一用'ajaxStart')。另请参阅http://stackoverflow.com/questions/3735877/whats-the-difference-between-1-ajaxstart-and-ajaxsend-and-2-ajaxstop-and – 2014-09-11 08:29:34

+0

另一个说明:@LordZardeck可能要删除“loading ...“进度条,当所有的Ajax请求都成功完成或有错误时。这可以使用'.ajaxError()'和'.ajaxStop()' – 2014-09-11 08:34:40

4

出于某种原因或其他$.ajaxSetup()不工作我。通过docs虽然阅读后,我发现:

注:全局回调函数应与各自 全局AJAX事件处理方法,.ajaxStart(),.ajaxStop(), .ajaxComplete(设置),.ajaxError(),.ajaxSuccess(),.ajaxSend() - 而不是 在$ .ajaxSetup()的选项对象中。

尝试$.ajaxStart()$.ajaxComplete()代替:

$(document).ajaxStart(function() { 
    console.log('Request Initiated'); 
}); 
$(document).ajaxComplete(function() { 
    console.log('Request Complete'); 
});