2

有没有办法检测所有 AJAX 调用(GET 和 POST)?在 AJAX 调用进程运行时,我需要做一种通用的方式来显示加载 div。类似于下面的代码:

$.ajax({
   url: 'my/url',
   type: "GET",
   dataType: "json",
   beforeSend: function() {
       $('#loading').show();
   },
   success: function() {
       $('#loading').hide();
       // do some stuff...
}

我正在寻找一种通用的方法来处理它,而不是调用每个 AJAXbeforeSend()和行为(显示和隐藏加载 div)。success()当我有一个 AJAX 调用时,我只是这样做:

$.ajax({
   url: 'my/url',
   type: "GET",
   dataType: "json",
   success: function() {
       // do some stuff...
}

当该beforeSend()行为在此请求中隐含时,对于success()隐藏行为也是如此。你知道我该如何对待这件事吗?

谢谢你们!

4

2 回答 2

4

是的,您可以使用.ajaxStart()&.ajaxStop()方法执行此操作,例如:

$(document).ready(function () {
    $(document).ajaxStart(function () {
        $('#loading').show();
    }).ajaxStop(function () {
        $('#loading').hide();
    });
});
于 2013-11-08T12:12:41.963 回答
2

有趣的是,我今天早上试图自己做这个!

$('#loading').bind('ajaxSend', function() {
    $(this).show();
}).bind('ajaxStop', function() {
    $(this).hide();
}).bind('ajaxError', function() {
    $this.hide();
});

显然,有很多不同的方法可以实现这一点,但我更喜欢将加载消息的可见性绑定到 AJAX 事件,而不是相反......

于 2013-11-08T12:13:03.823 回答