ajaxStart在Google Chrome中无效

时间:2013-10-03 11:45:36

标签: jquery ajax google-chrome

此代码(我的意思是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和正文而不是文档也不起作用。

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

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

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

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:1)

你试试这个:

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

答案 2 :(得分:1)

我有同样的问题。
解决方案是使用ajaxSuccess 这是全球事件方法。您也可以使用本地活动 您可以在jQuery Ajax Events Page

上了解差异

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

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

我正在使用jQuery 1.11.1 在Chrome浏览器42.0.2311.90米和42.0.2311.135米,Firefox 37.0.2中进行了测试

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