2013-04-24 2 views
1

setinterval을 사용하여 10 분마다 ajax 호출을 실행 중입니다. 이 호출은 PHP 페이지에서 새로운 포스트 데이터를 가져 와서 변수에 던지고 있습니다. 해당 새 게시물 데이터를로드하려면 링크를 클릭하면 페이지 앞에 추가됩니다.setInterval 및 Ajax 문제

페이지가 30 분 동안 비활성 상태 인 경우 3 분 (매분) 동안 ajax 호출이 실행됩니다. 그런 다음 링크를 클릭하여 새 게시물을로드하면 3 번로드됩니다.

한 번만로드해야합니다.

여기 내 코드입니다.

var getNewPosts = function() { 
    $.ajax({ 
     type: 'GET', 
     url: 'interactions/get_new_posts.php', 
     async: true, 
     cache: false, 
     //dataType: 'json', 
     success: function(results) { 
      var data = results; 
      // New Posts 
      var instagramPosts = $(data).find('#instagramPosts').html(); 


      //Load new Instagram Posts 
      $(document).one('click', '.instagram_menu', function(e) { 
       $('#feed_wrap').prepend(instagramPosts).isotope('reloadItems').isotope({ sortBy: 'original-order' }); 
       console.log(instagramPosts); 
      }); 

     }, 
     error: function(results) { 
      //console.log('true', results); 


     } 
    }); 
}; 

var interval = 1000 * 60 * 10; // Last int is minutes 
setInterval(getNewPosts, interval); 

그래서 새로운 게시물을 변수 instagramPosts에로드하는 것을 볼 수 있습니다. 그런 다음 .instagram_menu를 클릭하면 새 게시물 앞에 추가됩니다.

다시 말하면,이 함수가 여러 번 호출되는 경우 앉아서 .instagram_menu를 클릭하면 해당 함수가 호출 된 횟수만큼 해당 게시물이로드됩니다.

어디로 갈까요? 배울 올바른 방향으로 지적하고 싶습니다. 코드를 제공하고 하루 만 부르면 안됩니다. 고마워요

답변

0

클릭 한 다음 다시 바인딩 할 것입니다. 나는 '하나'가 무엇인지 모르겠다.

setInterval(bang, 1000); 


function bang(){ 

$('#clickme').unbind('click'); 
$('#clickme').one('click', function(){ 

    alert('bang'); 

}); 


} 
+0

http://api.jquery.com/one/. – Ryan

+0

그래,이 메서드의 첫 번째 폼은 .bind()와 동일하지만 핸들러가 첫 번째 호출 후에 언 바운드된다는 점을 제외하고 클릭 연결을 해제한다고 생각합니다. 함수를 호출 할 때마다 다른 클릭 이벤트가 바인딩되고 클릭되거나 호출되면 언 바운드됩니다. 바인딩 해제 또한 하나와 함께 작동합니다. http://jsfiddle.net/jY2sg/ – Matt

+0

문제는 이전에 데이터가 함수가 호출 된 횟수 x입니다. 클릭이 한 번 이상 발생하지 않도록 방지 할 수 있습니다. 클릭 할 때 미리 추가되는 데이터입니다. – Ryan