Comment le feu à une requête AJAX Périodiquement?
<meta http-equiv="Refresh" Content="5">
Ce script recharge ou d'actualiser la page toutes les 5 secondes. Mais je veux le faire à l'aide de jQuery et AJAX appel. Est-il possible?
Vous devez vous connecter pour publier un commentaire.
Comme d'autres l'ont souligné setInterval et setTimeout fera l'affaire. Je voulais souligner un peu plus avancé de la technique que j'ai appris de cette excellente vidéo par Paul Irish: http://paulirish.com/2010/10-things-i-learned-from-the-jquery-source/
Pour les tâches périodiques qui pourraient finir par prendre plus de temps que l'intervalle de répétition (comme une requête HTTP sur une connexion lente), il est préférable de ne pas utiliser
setInterval()
. Si la première demande n'est pas terminé et que vous en lancer un autre, vous pourriez vous retrouver dans une situation où vous avez plusieurs demandes qui consomment des ressources partagées et de mourir de faim les uns des autres. Vous pouvez éviter ce problème en attendant que le calendrier de la prochaine demande jusqu'à la dernière, a terminé:Pour des raisons de simplicité, j'ai utilisé le succès de rappel pour la planification. L'inconvénient de cette est un échec de la demande d'arrêt des mises à jour. Pour éviter cela, vous pourriez utiliser la totalité de la fonction de callback plutôt:
Oui, vous pouvez utiliser le JavaScript
setTimeout()
méthode ousetInterval()
méthode à invoquer le code que vous voulez exécuter. Voici comment vous pourriez le faire avec setTimeout:Vous pouvez utiliser
setTimeout
ousetInterval
.La différence est -
setTimeout qui déclenche votre fonction qu'une seule fois, et ensuite, vous devez le configurer à nouveau.
setInterval garde le déclenchement de l'expression, encore et encore, sauf si vous lui dites d'arrêter
J'ai essayé le code ci-dessous,
Cela n'a pas fonctionné comme prévu pour l'intervalle de temps spécifié,la page ne se charge pas complètement et la fonction a été appelée en continu.
Il est préférable de l'appeler
setTimeout(executeQuery, 5000);
à l'extérieurexecuteQuery()
dans une fonction distincte comme ci-dessous,Cela a fonctionné exactement comme prévu.