.ajaxStart和.ajaxStop没有解雇

时间:2011-07-07 01:49:40

标签: jquery ajax

有人可以帮我理解为什么这不起作用?在ajax .load加载页面时会出现loading.gif,但不会消失。这让我相信.ajaxStart和.ajaxStop函数都没有被调用(因为它最初也没有隐藏它)。

TIA!

css:

#loadingDiv {
background-image: url('images/loading.gif');
height: 32px;
width: 32px;
margin: 50px auto 50px auto; }

jquery:

<script type="text/javascript">
        $(document).ready(function()
            {
                $('#loadingDiv')
                    .hide()
                    .ajaxStart(function() {
                        $(this).show();
                    })
                    .ajaxStop(function() {
                        $(this).hide();
                    })
                ;
                $("#results").load("i/getAllInfo.class.php"); return false;
            };
    </script>

3 个答案:

答案 0 :(得分:6)

我知道这是一个老问题,但我刚刚解决了这个问题,所以我发布了我的解决方案:基本上,检查JavaScript是否有异常或语法错误。

从评论中,听起来您的问题是由语法错误引起的。对我来说,我的ajaxSuccess处理程序中有一个例外,它阻止了ajaxStop的触发。然后ajaxStart不会触发后续的ajax调用,因为ajaxStart仅在批处理的第一个ajax调用时触发。 jQuery从未收到过ajaxStop,所以它认为批处理仍在运行。

答案 1 :(得分:3)

请勿将其链接到loadingDiv

请改为尝试:

$.ajaxStart(function() {
   $('#loadingDiv').show();
});

$.ajaxStop(function() {
   $('#loadingDiv').hide();
});

答案 2 :(得分:2)

你不需要从文档就绪函数返回false,但你需要添加右括号),如下所示

     $("#results").load("i/getAllInfo.class.php"); return false;
 }); //<----- you need the )

您的网址“i / getAllInfo.class.php”看起来不对。

尝试在.ajaxStop()中注释掉$(this).hide(),如下所示:

.ajaxStop(function() {
     //$(this).hide();
})

因为它可以显示这么短的时间,你不会看到它。

这是你的小提琴:http://jsfiddle.net/GrsRT/11/