2010-05-04 6 views
1

J'ai un site avec les threads postés par l'utilisateur qui ont voté (haut ou bas), et un compte de vote est affiché à côté de chaque thread.jQuery - Ajax résultat résultat en html affichage dans la mauvaise position

Le vote et processus vers le bas est fait par jQuery/Ajax, et en utilisant quelque chose comme ceci:

$.ajax({ 
    url: 'vote.php', 
    success: function(data) { 
    $('.result').html(data); 

    } 
}); 

le code html du vote compte est mis à jour (.result étant la classe de la div contient le nombre de votes)

De plus, les fils sont triés d'abord par le nombre de votes décroissant, puis par ordre alphabétique. J'ai un problème avec la mise à jour ajax du compte de vote HTML ajax en temps réel, j'ai l'impression que le problème est dû au fait que l'ordre des threads changent quand le nombre de voix est mis à jour, mais je ne suis pas certain. Je sais que la base de données est en cours de mise à jour et lorsque j'actualise la page, elle est également mise à jour correctement, mais je ne vois pas le comportement en temps réel que j'attend de jQuery/Ajax.

Quel pourrait être le problème?

Répondre

2

$('.result') référencera tous les éléments avec la classe "result" dans tout le document. Attribuez-vous sélectivement cette classe à l'élément à mettre à jour? Dans ce cas, vous devez nous montrer le code pour cela.

Sinon, vous voulez probablement regarder accéder au conteneur approprié par quelque chose comme une carte d'identité, qui n'est pas affectée par la façon dont l'ordre des éléments changent

$('#item-' + id).find('.result').html(data); 
+0

ce fut le cœur du problème! Je l'ai compris après avoir posé la question, mais merci pour la bonne réponse de toute façon :) – Sev

0

Essayez

$.ajax({ 
    url: 'vote.php', 
    success: function(data) { 
    $('.result').text(data); 

    } 
}); 

Si le serveur est simplement d'envoyer le numéro, vous devriez probablement mettre tout le texte.

Questions connexes