我的网站上有一个实时更新div。它工作正常但是用户总是必须在加载前等待5秒。继承我的代码:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js">
</script>
<script type="text/javascript">
$(document).ready(function() {
$.ajaxSetup({ cache: false });
setInterval(function() {
$('#div-id').load('/something.php');
}, 5000);
});
</script>
有没有办法可以加载,然后等待5秒再加载一次?而不是等待5秒,加载它,然后再等一下......
由于
答案 0 :(得分:3)
是。 jQuery的load()
方法有complete callback function作为参数:
.load( url [, data ] [, complete ] )
完成
请求完成时执行的回调函数。
由于这个原因,我们可以创建一个递归函数,该函数在完成后调用自身(或者在这种情况下,在5秒后调用):
function loadContent(selector, path) {
$(selector).load(path, function() {
setTimeout( loadContent(selector, path), 5000 );
});
}
loadContent('#div-id', '/something.php');
我在此处所做的是将内容加载逻辑移动到名为loadContent
的新函数中,该函数接受选择器和路径作为其参数。然后,此函数在传入的选择器上触发load()
,加载传入的路径。当内容加载后,{5000}函数会在5000毫秒(5秒)后再次触发setTimeout
函数。
触发loadContent
开始会立即关闭我们的功能,这意味着您不必在内容首次加载前等待5秒。
答案 1 :(得分:2)
您必须在第一次间隔运行之前手动运行ajax。
<script type="text/javascript">
var loadContent = function() {
$('#div-id').load('/something.php');
};
$(document).ready(function() {
$.ajaxSetup({ cache: false });
loadContent();
setInterval(loadContent, 5000);
});
</script>
答案 2 :(得分:0)
在
之前拨打load
一次
$('#div-id').load('/something.php');
setInterval(function() {
$('#div-id').load('/something.php');
}, 5000);