[英]How to show refresh indicator during an ajax refresh call?
我有一些jQuery代码,可以每10 seconds
重新加载div,而无需重新加载整个页面。 但是,目前,刷新时用户看不到浏览器上发生任何事情。
我知道互联网上有成千上万个示例,但是对于脚本,我已经必须在每10秒刷新一次的同时检索数据时显示加载的gif图像,用户应该看到这样的刷新图像--
。
我敢肯定这可能很容易,但是我找不到有关如何执行操作的任何信息。 任何帮助或指针将不胜感激。
问题陈述:-
以下是我的JSP文件(dataInfo.jsp)
的div,我每10秒重新加载div container
而无需重新加载整个页面。
<body>
<div id='headerDivDash'>
<h1 id='topHeaderDash'>
<!-- some image here -->
</h1>
</div>
<div id="vertical-list" style='display: block; list-style-type: none;'>
<ul class="resp-tabs-list">
<a href="_blank"><li>Test 1</li></a>
<br />
<a href="_blank"><li>Test 2</li></a>
</ul>
</div>
<!-- just need to reload this div, other div should be intact without getting appended -->
<div class="container">
</div>
<div class="footer">Some Value Here</div>
</body>
现在下面是我用来每30秒加载div container
的jquery脚本,它工作正常。
<script type="text/javascript">
$(document).ready(function(){
var auto_refresh = setInterval(
function ()
{
$('.container').html('');
$('.container').load('dataInfo.jsp .container').fadeIn("slow");
}, 10 * 1000);
});
</script>
现在,如上所述,一旦刷新即将发生,我想将container div
变灰,并显示如上所示的刷新图像,并在刷新完成后立即显示正常结果,然后刷新图像也将消失。
在我当前的示例中可以这样做吗?
我看到您已经在使用JQuery,因此此答案非常适合您。 您可以使用此代码创建灰色背景并显示加载图像。
// Create a refresh function:
function refresh(){
// SHOW overlay
$('#overlay').show();
// Retrieve data:
$.ajax({
url: 'data.html',
type: 'GET',
success: function(data){
// onSuccess take only the container content
var content = $($.parseHTML(data)).filter(".container");
//Replace content inside the div
$('.container').html(content);
// HIDE the overlay:
$('#overlay').hide();
}
});
}
$(document).ready(function(){
// Create overlay and append to body:
$('<div id="overlay"/>').css({
position: 'fixed',
top: 0,
left: 0,
width: '100%',
height: $(window).height() + 'px',
opacity:0.4,
background: 'lightgray url(http://bradsknutson.com/wp-content/uploads/2013/04/page-loader.gif) no-repeat center'
}).hide().appendTo('body');
// Execute refresh with interval:
setInterval(refresh, 1 * 1000);
});
希望这对您有所帮助。 注意:将“ img / loading.gif”替换为要使用的gif的路由。
在这里,您可以使用代码: http : //jsbin.com/zizudexo/1/edit
当启动ajax请求时,将加载图像放置在结果容器上。
$('<div id="ajaxLoad"></div>').appendTo('.container');
添加此CSS规则以正确显示它:
#ajaxLoad {
position: absoulte;
top: 0;
left: 0;
right: 0;
bottom: 0;
opacity: 0.5;
background: silver url(my_image.png) no-repeat center center;
z-index: 1000;
}
新增position: relative;
到.container
。
然后,您可以启动ajax调用:
$.ajax({
type: "GET",
url: "dataInfo.jsp",
success: function(data) {
$('.container').html(data).fadeIn("slow");
},
complete: function() {
$('#ajaxLoad').remove();
}
});
当数据到达时显示它,这就是成功的原因。 即使服务器返回错误代码或您的查询超时,完整程序也将运行。
你能看一下吗: jsFiddle
我使用了<i class="fa fa-refresh fa-spin"></i>
fontawesome图标来显示刷新符号...这是实现所需目标的一种方法...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.