2014-01-09 2 views
2

30 초마다 실행하려는 기능이 있습니다. 이30 초마다 ajax를 실행하고 카운트 다운 타이머를 표시하십시오.

$(document).ready(function(){ 
    setInterval(function() { 
     jQuery.ajax({ 
      type: "GET", 
      url: "loaddata.php", 
      dataType:"json", 
      success:function(response){ 
       if (response) { 
        // Process 
       } 
       else { 
        // Process 
       } 
      } 

     }); 
    }, 30000); 
}); 

잘 작동하지만 내가 setInterval을 가진 인라인 카운트 다운 타이머를 표시 할 수있는 방법을 알아 내려고 노력하고있다. 즉 ajax가 실행되기 전에 몇 초가 남았는지를 보여 주어야하며, 일단 함수가 실행되면 타이머를 재설정하고 30 초에서 다시 카운트 다운해야합니다. 이 과정은 계속 반복됩니다. 카운트 다운 타이머에 대한 몇 가지 예를 발견했지만 AJAX 요청과 동기화하는 방법을 모르고 재설정했습니다.

도움을 주시면 대단히 감사하겠습니다.

+0

@dhsto의 해결책에 추가되었지만 (전역) var 및'setIntveral()'가 없다. 대신에 나는 명명 된 함수를 사용했고'setTimeout()'을 사용했습니다 - [fiddle] (http://jsfiddle.net/63vQW/) – Andreas

답변

7

매초마다 함수를 실행하고 0으로 카운트하는 카운터가 있습니다. 0에 도달하면 Ajax 코드를 실행하고 카운터를 재설정하십시오. 그래서 같이 : (30)에 타이머의 초기 표시 값을 설정

var count = 30; 
setInterval(function() { 
    count--; 

    // update timer here 

    if (count === 0) { 
     count = 30; 
     // ajax code here 
    } 
}, 1000); 

그런 다음이 29,28,27, ..., 2,1,0,29,28, 등

를 표시합니다
+0

은 완벽하게 작동합니다, 감사합니다! –

관련 문제