<meta http-equiv="Refresh" Content="5">
Ce script recharge ou actualise la page toutes les 5 secondes. Mais je veux le faire en utilisant jQuery et AJAX call. C'est possible?
Comme d'autres l'ont souligné, setInterval et setTimeout feront l'affaire. Je voulais souligner une technique un peu plus avancée que j'ai apprise de cette excellente vidéo de Paul Irish: http://paulirish.com/2010/10-things-i-learned-from-the-jquery-source/
Pour les tâches périodiques qui pourraient 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 l'utiliser setInterval()
. Si la première demande n'est pas terminée et que vous en démarrez une autre, vous pourriez vous retrouver dans une situation où vous avez plusieurs demandes qui consomment des ressources partagées et se meurent de faim. Vous pouvez éviter ce problème en attendant de planifier la prochaine demande jusqu'à ce que la dernière soit terminée:
// Use a named immediately-invoked function expression.
(function worker() {
$.get('ajax/test.html', function(data) {
// Now that we've completed the request schedule the next one.
$('.result').html(data);
setTimeout(worker, 5000);
});
})();
Pour plus de simplicité, j'ai utilisé le rappel de succès pour la planification. L'inconvénient est qu'une demande échouée arrêtera les mises à jour. Pour éviter cela, vous pouvez utiliser le rappel complet à la place:
(function worker() {
$.ajax({
url: 'ajax/test.html',
success: function(data) {
$('.result').html(data);
},
complete: function() {
// Schedule the next request when the current one's complete
setTimeout(worker, 5000);
}
});
})();
Oui, vous pouvez utiliser la
setTimeout()
méthode ou lasetInterval()
méthode JavaScript pour appeler le code que vous souhaitez exécuter. Voici comment vous pouvez le faire avec setTimeout:la source
Vous pouvez utiliser
setTimeout
ousetInterval
.La différence est que setTimeout ne déclenche votre fonction qu'une seule fois, puis vous devez la redéfinir. setInterval continue de déclencher l'expression encore et encore, à moins que vous ne lui disiez d'arrêter
la source
J'ai essayé le code ci-dessous,
Cela n'a pas fonctionné comme prévu pendant l'intervalle spécifié, la page ne s'est pas chargée complètement et la fonction a été appelée en continu. Il est préférable d'appeler l'
setTimeout(executeQuery, 5000);
extérieurexecuteQuery()
dans une fonction distincte comme ci-dessous,Cela a fonctionné exactement comme prévu.
la source