【问题标题】:ajaxStart doesn`t work in Google ChromeajaxStart 在 Google Chrome 中不起作用
【发布时间】:2013-10-03 11:45:35
【问题描述】:

此代码(我的意思是 ajaxStart/ajaxStop)仅适用于 Google Chrome。

$.ajax({ type: "GET",
                url: '<?=base_url();?>' + url,
                async: false,
                success : function(html)
                {
                    modal = html;
                }
            });

$(document).ready(function() {
    $(document)
        .ajaxStart(function () {
            $('#spinner').show();
        })
        .ajaxStop(function () {
            $('#spinner').hide();
        });
});

如何在 chrome 中使用 ajaxStart/ajaxStop?

更新:我没有错误。谷歌浏览器只是忽略 ajaxStart/ajaxStop 动作。 html 和 body 而不是 document 也不起作用。

在后端我使用睡眠 5 秒来查看加载过程。

是的,我使用的是最新版本的谷歌浏览器。

@Murali,这很神奇。浏览器忽略 show()。但是,如果我在 alert() 之后/之前写,一切都好。怎么样?

【问题讨论】:

  • 我不确定,但不要使用 $(document).ajaxStart.... 尝试使用 $('html,body').ajaxStart... 。也许它可以工作。
  • 您最近是否偶然更新到 Chrome 30?

标签: jquery ajax google-chrome


【解决方案1】:

尝试移出document.ready并使用ajaxComplete,即使您的请求有错误,它也会被执行

 <script type="text/javascript">
    $(document).ajaxStart(function(event, xhr, settings) {
        alert('started');
        $('#spinner').show();
    })
    .ajaxComplete(function(event, xhr, settings) {
        alert('completed');
        $('#spinner').hide();
    });
 </script>

【讨论】:

  • @Vitaliy,更新了答案。您遇到了什么错误?尝试在控制台中查看并告诉我们
【解决方案2】:

你有没有试过这个:

$(document).bind("ajaxSend", function(){
  $("#spinner").show();
}).bind("ajaxComplete", function(){
  $("#spinner").hide();
});

【讨论】:

    【解决方案3】:

    我也遇到过同样的问题。
    解决方案是使用 ajaxSuccess。
    这是全局事件方法。您还可以使用本地活动。
    您可以在jQuery Ajax Events Page 了解不同之处

    ajaxComplete 和 ajaxSuccess 之间的区别是:
    ajaxSuccess:只有在请求成功(服务器没有错误,数据没有错误)时才会调用此事件。
    ajaxComplete: 无论请求是否成功,都会调用此事件。您将始终收到完整的回调,即使是同步请求也是如此。每次 Ajax 请求完成时都会触发它。

    另一个问题可能是你应该在$(document).ready(function() {之外使用它
    其他问题可能是您有未完成的 Ajax 请求。见documentation

    我正在使用 jQuery 1.11.1。
    在 Chrome 42.0.2311.90 m 和 42.0.2311.135 m、Firefox 37.0.2 中测试

    $(document).on({
        ajaxStart: function() {
            $('#spinner').show();
        },
        ajaxSuccess: function() {
            $('#spinner').hide();
        }
    });
    

    【讨论】:

    • 能否请您详细说明您的答案,添加更多关于您提供的解决方案的描述?
    • 有同样的 Chrome 问题 - 这解决了它!
    猜你喜欢
    • 2012-06-04
    • 1970-01-01
    • 2011-04-01
    • 2012-09-30
    • 2017-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    相关资源
    最近更新 更多