<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 appel AJAX. C'est possible?
<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 appel AJAX. C'est possible?
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é:
// 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 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:
(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 méthode JavaScript setTimeout () ou la méthode setInterval () pour appeler le code que vous souhaitez exécuter. Voici comment vous pouvez le faire avec setTimeout:
function executeQuery() {
$.ajax({
url: 'url/path/here',
success: function(data) {
// do something with the return value here if you like
}
});
setTimeout(executeQuery, 5000); // you could choose not to continue on failure...
}
$(document).ready(function() {
// run the first time; all subsequent calls will take care of themselves
setTimeout(executeQuery, 5000);
});
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.