6
votes

Comment planifier des appels AJAX toutes les n secondes?

Si je veux une page entière pour recharger toutes les n secondes, je mettrais quelque chose comme celui-ci dans le HTML: méta http-equiv = "rafraîchir" contenu = "5"

Y a-t-il une pratique standard pour faire le même genre de chose pour les appels Ajax? Je souhaite un calendrier un appel AJAX pour s'éteindre toutes les 10 secondes, par exemple, afin de mettre à jour les pièces de la page, sans rafraîchir la page entière. Il serait encore meilleur si je pouvais planifier plusieurs appels Ajax à des moments différents, car certaines parties de la page devraient être mises à jour plus souvent que d'autres.

TIA


2 commentaires

Depuis que Settimeout et seinterval ont déjà été mentionnés, vous devriez probablement jeter un oeil aux notes de John Resig sur la manière dont les minuteries fonctionnent à JavaScript - ejohn.org/blog/how-javascript-timers-work


En regardant la bibliothèque de jQuery - il semble y avoir un plug-in populaire conçu pour faire spécifiquement ce que j'étais après: 360Innovate.co.uk/blog/2009/03/periodicalupdater-for-jQuery


4 Réponses :


13
votes

Vous pouvez utiliser Settimeout code> ou setInterval code> (ce dernier est probablement mieux adapté à ce que vous voulez faire).

setInterval(makeRequest, (10 * 1000));


4 commentaires

Si vous faites cela, je vérifierais que la demande précédente a terminé avant de commencer une autre. Vous ne voulez pas empiler des demandes s'il y a un décalage réseau.


@jtbandes: bon point. Cependant, cette logique irait probablement dans la fonction "Makequest".


@jtbandes, que se passera-t-il si la demande précédente n'était pas terminée quand une autre est lancée?


@Peterlee Il est tout simplement indésirable - par exemple, si on est à la traîne, ils pourraient terminer à peu près au même moment et que votre interface utilisateur pourrait donc se mettre à jour irrégulièrement. Ou s'il y a une erreur réseau et aucune des demandes ne peut passer à travers, il ne sert à rien d'envoyer plus de demandes toutes les quelques secondes.



5
votes
function proxy()
{
  /* implement call to your Ajax method */
}

setInterval( proxy, 1000 ); // last arg is in milliseconds

0 commentaires

1
votes
You can use serInterval method of javascript:
Just write down the lines at the bottom of your page:

<script>
window.setInterval(function(){
  ajaxCallFunction();  //calling every 5 seconds
}, 5000);

function ajaxCallFunction(){
    //this function uses ajax to interact with the server
}
<script>

0 commentaires

0
votes

Je suppose qu'il existe un servlet avec motif d'URL / updateCount est configuré dans web.xml pour fournir des données / contenus dynamiques et il y a un élément div (Strong> chefstatdiv dans le Page JSP.

Le code suivant rafraîchit / met à jour le contenu de CountStatditDiv à toutes les 30 secondes à l'aide de la méthode et de la variable secondes peut être modifiée en fonction du besoin: xxx


0 commentaires