<meta http-equiv="Refresh" Content="5">
Questo script ricarica o aggiorna la pagina ogni 5 secondi. Ma voglio farlo usando jQuery e la chiamata AJAX. È possibile?
- user12345
Come altri hanno sottolineato, setInterval e setTimeout faranno il trucco. Volevo mettere in evidenza una tecnica un po' più avanzata che ho imparato da questo eccellente video di Paul Irish: http://paulirish.com/2010/10-things-i-learned-from-the-jquery-source/
Per attività periodiche che potrebbero richiedere più tempo dell'intervallo di ripetizione (come una richiesta HTTP su una connessione lenta) è meglio non utilizzare setInterval()
. Se la prima richiesta non è stata completata e ne inizi un'altra, potresti finire in una situazione in cui hai più richieste che consumano risorse condivise e muoiono di fame a vicenda. Puoi evitare questo problema aspettando di programmare la richiesta successiva fino al completamento dell'ultima:
// 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);
});
})();
Per semplicità ho utilizzato la callback di successo per la pianificazione. Il lato negativo di questo è che una richiesta non riuscita interromperà gli aggiornamenti. Per evitare ciò potresti invece utilizzare la richiamata completa:
(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);
}
});
})();