有人可以帮我理解为什么这不起作用?在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>
答案 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/