【问题标题】:catch all ajax requests in jquery在 jquery 中捕获所有 ajax 请求
【发布时间】:2012-01-28 07:49:55
【问题描述】:

我想在每次发送 ajax 请求时显示一个“加载”进度条。是否可以随时通知使用 jQuery 发送 ajax 请求?

【问题讨论】:

    标签: jquery ajax


    【解决方案1】:

    您可以使用$.ajaxSetup() 方法设置将应用于整个页面的全局 AJAX 属性:

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

    【讨论】:

    【解决方案2】:

    出于某种原因,$.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');
    });
    

    【讨论】:

      【解决方案3】:

      尝试使用 jQuery 的 ajaxStart 事件

      【讨论】:

      • 我可能会使用ajaxSend,因为它会为所有ajax请求触发(而只有第一个使用ajaxStart)。另见stackoverflow.com/questions/3735877/…
      • 另一个注意事项:@LordZardeck 可能希望在所有 ajax 请求成功完成或出现错误时删除“正在加载...”进度条。这需要使用.ajaxError().ajaxStop() 来完成
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-15
      • 1970-01-01
      • 1970-01-01
      • 2013-09-11
      相关资源
      最近更新 更多