2009-05-29 4 views

답변

1

이 작동합니다 :

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

loadResults() 

를 작동하는 방법 :

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

이 줄은 'yourpage.php'에 아약스 호출을하고 (주 해당 페이지의 결과에 사업부를 채 웁니다 귀하의 페이지를 호출 한 결과가 전체 페이지가 아니라 단순한 미리보기 일 것임)

setTimeOut(arguments.callee, 10000) 

setTimeOut 스케쥴 a 이 경우에는 10 초입니다. 모든 함수가 액세스 할 수있는 변수 'arguments'에서 가져온 함수 자체를 호출하는 함수. 재귀 함수와 비슷하지만 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) 
+0

매우 우아합니다. – chris

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

+0

나는 이것이 두 개의 downvotes를 얻을 수 있다는 놀라운 것을 알게되었습니다. 두! 정말 도움이되지 않을까요? – karim79

+0

나는 2 개의 downvotes도 얻었다! WTF! –

0

그것은 setInterval을 모든이 기능을 실행할 것을 주목할 필요가 보류중인 AJAX 요청의 진행 상황에 관계없이 5 초 (예제 karim79가 제공됨). 첫 번째 요청이 완료되는 데 3 초가 걸리면 setInterval은 5 초가 아니라 2 초 후에 다음 요청을 보냅니다. 실제로 새로 고침과 다음 요청 사이에 5 초가 필요하면 success 내에서 setTimeout을 사용할 수 있습니다 콜백 함수.

이 접근법의 단점은 실패한 setTimeout이 섹션이 다시 새로 고쳐지지 않는다는 것입니다.

+0

이것은 최고의 솔루션이라고 생각합니다. –