Dans ce scénario, une base de données de commentaires est interrogée à l'aide d'AJAX toutes les 10 secondes pour afficher de nouveaux commentaires dans un div . Cependant, le code rencontre un problème où il n'affiche que deux éléments de commentaires au lieu d'être continuellement mis à jour avec de nouveaux.
L'erreur provient de l'absence de mécanisme pour déclencher les appels AJAX ultérieurs. après le premier. Pour remédier à cela, introduisez une fonction setInterval() ou setTimeout() pour automatiser la répétition d'appel.
Approche setInterval() :
<code class="javascript">setInterval(get_fb, 10000);</code>
Dans cette variante, get_fb() s'exécute toutes les 10 secondes quel que soit l'état de l'appel AJAX précédent.
setTimeout() avec Success Callback :
<code class="javascript">var feedback = $.ajax({ type: "POST", url: "feedback.php", async: false }).success(function() { setTimeout(function() { get_fb(); }, 10000); }).responseText;</code>
Avec cette méthode, le le prochain appel s'exécute une fois l'appel AJAX en cours terminé avec succès.
setTimeout() avec rappel complet :
<code class="javascript">var feedback = $.ajax({ type: "POST", url: "feedback.php", async: false }).complete(function() { setTimeout(function() { get_fb(); }, 10000); }).responseText;</code>
Cette approche garantit qu'un nouvel appel AJAX est déclenché indépendamment du résultat de la précédente.
L'exemple fourni sur jsfiddle démontre la mise en œuvre correcte des deux méthodes. Notez que le rappel de réussite ne fonctionne qu'une seule fois en raison d'une erreur renvoyée par l'appel AJAX.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!