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를 클릭하면 해당 함수가 호출 된 횟수만큼 해당 게시물이로드됩니다.
어디로 갈까요? 배울 올바른 방향으로 지적하고 싶습니다. 코드를 제공하고 하루 만 부르면 안됩니다. 고마워요
http://api.jquery.com/one/. – Ryan
그래,이 메서드의 첫 번째 폼은 .bind()와 동일하지만 핸들러가 첫 번째 호출 후에 언 바운드된다는 점을 제외하고 클릭 연결을 해제한다고 생각합니다. 함수를 호출 할 때마다 다른 클릭 이벤트가 바인딩되고 클릭되거나 호출되면 언 바운드됩니다. 바인딩 해제 또한 하나와 함께 작동합니다. http://jsfiddle.net/jY2sg/ – Matt
문제는 이전에 데이터가 함수가 호출 된 횟수 x입니다. 클릭이 한 번 이상 발생하지 않도록 방지 할 수 있습니다. 클릭 할 때 미리 추가되는 데이터입니다. – Ryan