2009-05-29 75 views

回答

1

这应该工作:

function loadResults(){ 
    $('div.to.update').load('yourpage.php') 
    setTimeOut(arguments.callee, 10000) 
} 

loadResults() 

工作原理:

$('div.to.update').load('yourpage.php') 

这条线使一个AJAX调用“yourpage.php”,填补与该页面的结果股利(注在调用yourpage的结果不应该是一整页,而只是一个片段)

setTimeOut(arguments.callee, 10000) 

的setTimeout一个时间表函数调用,在这种情况下为10秒。该函数调用其函数本身,取自每个函数都可以访问的变量“参数”。这就像一个递归函数,但延迟了10秒。

最后,您第一次调用函数来启动循环。

编辑:

您也可以致电在使用setInterval()的函数,如果以后需要停止循环,只是这样做:

function loadResults(){ 
     $('div.to.update').load('yourpage.php') 
    } 

    var interval_id = setInterval(loadResults,10000) 

    // Later on when you want to stop the refresh... 

    clearInterval(interval_id) 
1

您需要定期更新。喜欢的东西:

function callMeAtInterval() 
{ 
    $.ajax({ 
        method: 'get', 
        url : 'status.php', 
        dataType : 'text', 
        success: function (text) { $('#updateMe').html(text); } 
       }); 

} 
//causes callMeAtInterval() to get called every 5 seconds. 
var holdTheInterval = setInterval(callMeAtInterval, 5000); 

jQuery的$.ajax功能得到由URL指定的资源的输出,成功回调允许你做一些处理的结果,在上面的例子:

('#updateMe').html(text); 

用从服务器返回的文本填充id updateMe的页面元素。

+0

+1点,你打我吧 – bendewey 2009-05-29 02:03:38

+0

我觉得这很棒,可以得到两个downvotes。二!这真的没用吗? – karim79 2009-05-29 11:25:03

+0

我也有两个downvotes! WTF! – 2009-05-29 15:24:54

0

值得一提的是,setInterval的将每一个执行此功能5秒(在karim79提供的示例中),无论待处理的AJAX请求的进度如何。如果第一个请求需要3秒钟完成,setInterval将在2秒后发送下一个请求,而不是5.如果实际上希望在成功刷新和下一个请求之间有5秒钟的时间,则可能需要在success内使用setTimeout回调函数。看起来像这样:

function callMeAtInterval() { 
    $.ajax({ 
     method: 'get', 
     url : 'status.php', 
     dataType : 'text', 
     success: function (text) { 
      $('#updateMe').html(text); 
      setTimeout(callMeAtInterval, 5000); 
      } 
    }); 

} 

这种方法的缺点是一个失败的setTimeout意味着该部分不会再被刷新。