2

此代码(我的意思是 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() 之后/之前写,一切都好。怎么会这样?

4

3 回答 3

1

你试试这个:

$(document).bind("ajaxSend", function(){
  $("#spinner").show();
}).bind("ajaxComplete", function(){
  $("#spinner").hide();
});
于 2013-10-03T16:26:22.300 回答
1

我有同样的问题。
解决方案是使用 ajaxSuccess。
这是全局事件方法。您还可以使用本地事件。您可以在jQuery Ajax 事件页面
中了解不同之处

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

另一个问题可能是您应该在外部使用它$(document).ready(function() {
其他问题可能是您有未完成的 Ajax 请求。查看文档

我正在使用 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();
    }
});
于 2015-04-29T08:07:52.270 回答
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>
于 2013-10-03T11:46:45.973 回答