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,它會加載這些帖子函數被調用的次數。
我該去哪裏?我希望指出正確的學習方向,不要只給我一些代碼,並且每天給它打電話。謝謝
http://api.jquery.com/one/。 – Ryan 2013-04-24 16:13:10
是的,我認爲你想解除綁定點擊「除了第一次調用後處理程序被解除綁定之外,此方法的第一種形式與.bind()相同」。每次調用該函數時,都會綁定另一個單擊事件,該事件一旦被點擊或調用就會解除綁定。取消綁定也可以與其中一個一起工作http://jsfiddle.net/jY2sg/ – Matt 2013-04-24 16:27:11
問題在於它預先調用了函數被調用的數據x次數。我可以防止點擊發生多次,這是點擊時被預先添加的數據。 – Ryan 2013-04-24 16:58:09