2009-11-25 8 views
0

J'ai un div cliquable chargeant les 5 prochains commentaires de ma base de données, sorte de comment Twitter charge de nouveaux tweets dans votre calendrier. J'ai quelques autres fonctions POST dans mon code et ils peuvent être déclenchés plusieurs fois, mais celui-ci ne le sera pas.Répéter une fonction jQuery AJAX POST

Voici le code - les commentaires sont renvoyés à partir d'une URL (le site est codeigniter), inséré dans un div masqué, puis le div est glissé vers le bas.

$(".content .load-more-comments").live("click", load_messages); 
function load_messages() { 
    var offset = 10; 
    var count = 5; 
    $.post((site_url+'project/load_more_messages/'+project_id), { count:count, offset:offset }, function(data) { 
     if(data) { 
      var more_messages = data; 
      $("ul.messages").append('<div class="slidedown" style="display:none;">'+data+'</div>'); 
      $("ul.messages div.slidedown").slideDown(1000); 
      var offset = offset+5; 
     } else { 
      $("ul.messages").append('<p class="error">Additional messages could not be loaded.</p>'); 
     }; 
    }); 
    return false; 
}; 

Comme je l'ai dit, cela fonctionne bien la première fois, mais après cela, pas de dés. Ma conjecture est que quelque chose dans la fonction est toujours en cours d'exécution, mais j'ai essayé de terminer tout ce qui fonctionne et cela n'a pas fonctionné.

+0

Voulez-vous réinitialiser votre décalage chaque fois que vous appelez load_messages? – climbage

+0

Voulez-vous dire ajouter une nouvelle div de classe "slidedown" pour chaque poste ajax? – jjclarkson

+0

D'où proviennent site_url et project_id? Vous semblez vouloir que le décalage soit augmenté de 5. Mais le 'décalage + 5 'vous avez là une variable locale – jitter

Répondre

2

Ce sont les lignes incriminées:

var offset = 10; 
var count = 5; 

Everytime un clic est votre décalage & comptage est remis à 10 & 5 respectivement. Il me semble que vous devez rendre ces déclarations de variables globales, en dehors de la fonction load_messages().

+0

J'ai effectivement remarqué cela plus tôt et l'ai changé, mais cela n'affectait rien. Je ne pense pas que la fonction fonctionne une seconde fois. –