2013-04-24 2 views
1

Я запускаю вызов ajax каждые 10 минут с помощью setinterval. Этот вызов получает новые почтовые данные с php-страницы и перебрасывает их в переменную. Когда я хочу загрузить эти новые данные, я бы нажал на ссылку, и она будет добавлена ​​на страницу.setInterval и Ajax issues

Я столкнулся с проблемой, если страница сидит неактивно в течение 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, она загружает эти сообщения в количестве раз, когда функция была вызвана.

Куда я иду с этим? Я бы хотел, чтобы вас указали в правильном направлении, чтобы учиться, не просто дайте мне код и назовите его днем. Спасибо

ответ

0

Я бы отвязал клик, а затем снова привязал. Я не уверен, что это такое?

setInterval(bang, 1000); 


function bang(){ 

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

    alert('bang'); 

}); 


} 
+0

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

+0

Да, я думаю, вы хотите отвязать клик «Первая форма этого метода идентична .bind(), за исключением того, что обработчик не связан после первого вызова». Каждый раз, когда вы вызываете функцию, она связывает другое событие клика, которое затем отключается после нажатия или вызова. Unbind работает с одним из них: http://jsfiddle.net/jY2sg/ – Matt

+0

Проблема заключается в том, что он добавляет данные в х раз, когда функция вызывалась. Я могу предотвратить щелчок, который происходит более одного раза, это данные, которые добавляются при нажатии. – Ryan