setInterval和Ajax问题

时间:2013-04-24 16:01:38

标签: jquery ajax setinterval multiple-instances

我使用setinterval每10分钟运行一次ajax调用。该调用是从php页面获取新的帖子数据并将其投入变量。当我想加载新的帖子数据时,我会点击一个链接,它会在页面前面加载。

我遇到的问题是,如果页面处于非活动状态30分钟,它会运行ajax调用3次(每次分钟)。然后,当我单击链接以加载新帖子时,它们会被加载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,它会加载这些函数调用函数的次数。

我该去哪儿?我想指出正确的学习方向,不要只给我代码并称之为一天。感谢

1 个答案:

答案 0 :(得分:0)

我会取消绑定点击然后再次绑定。我不确定'一个'会做什么?

setInterval(bang, 1000);


function bang(){

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

    alert('bang');

});


}