Ajax jquery - 即时加载

时间:2014-08-13 14:48:09

标签: javascript jquery ajax

我的网站上有一个实时更新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秒,加载它,然后再等一下......

由于

3 个答案:

答案 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);