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é.
Voulez-vous réinitialiser votre décalage chaque fois que vous appelez load_messages? – climbage
Voulez-vous dire ajouter une nouvelle div de classe "slidedown" pour chaque poste ajax? – jjclarkson
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