使用Ajax重新加载div

时间:2013-04-22 20:56:27

标签: jquery ajax

所以我搜索了SO以帮助创建以下请求以特定间隔刷新div

    $(document).ready(function() {
             $("#trigger-newsfeed").load("getNewsfeed.php");
           var refreshId = setInterval(function() {
              $("#trigger-newsfeed").load('getNewsfeed.php');
           }, 4000);
    });

虽然我想知道是否可以通过使用Ajax来提高效率(如果在没有我意识到的情况下它没有使用Ajax),这是有效的。

我曾尝试使用其他一些Ajax代码来执行此操作,但是,其他解决方案会等待间隔完成然后加载数据。因此,例如,如果间隔设置为5秒,则每次访问该页面时,用户必须等待5秒钟然后才会加载;所以这是我发现最好的一个片段,通过首先传递信息 然后按间隔刷新;虽然我不确定是否最好使用jquery来做到这一点。

我问这个是因为大多数关于div刷新的在线搜索都指向了Ajax的使用。

2 个答案:

答案 0 :(得分:2)

您所拥有的功能,但如果网络连接/计算机运行缓慢或服务器由于某种原因而陷入困境,请求可能会开始备份,如果这种情况发生太多,可能会导致浏览器崩溃。

要解决此问题,请使用setTimeout而不是间隔,以便它在收到上一个请求的响应后4秒才会请求新数据。

function refreshNewsFeed() {
    $("#trigger-newsfeed").load("getNewsfeed.php",function(){
        setTimeout(refreshNewsFeed,4000);
    });
}
$(document).ready(refreshNewsFeed);

答案 1 :(得分:1)

你可以这样做。

$(document).ready(function() {
    var loadNewsFeed = function () {
        $("#trigger-newsfeed").load('getNewsfeed.php');
    };
    loadNewsFeed();
    var refreshId = window.setInterval(loadNewsFeed, 4000);
});

在.ready中我们声明一个函数并将其分配给变量loadNewsFeed。然后我们执行该功能。然后,我们设置间隔在此之后每4秒执行一次。