/ / Wie führe ich AJAX-Anfragen regelmäßig aus? - jquery, ajax

Wie man AJAX Anfrage periodisch abfeuert? - Jquery, Ajax

<meta http-equiv="Refresh" Content="5">

Dieses Skript lädt die Seite alle 5 Sekunden neu oder aktualisiert sie. Aber ich möchte es mit jQuery und AJAX call machen. Ist es möglich?

Antworten:

254 für die Antwort № 1

Wie andere darauf hingewiesen haben, werden setInterval und setTimeout den Trick ausführen. Ich wollte eine etwas fortgeschrittenere Technik hervorheben, die ich aus diesem ausgezeichneten Video von Paul Irish gelernt habe: http://paulirish.com/2010/10-things-i-learned-from-the-jquery-source/

Für periodische Tasks, die möglicherweise länger dauern als das Wiederholungsintervall (z. B. eine HTTP-Anforderung für eine langsame Verbindung), sollten Sie dies am besten nicht verwenden setInterval(). Wenn die erste Anfrage noch nicht abgeschlossen ist und SieWenn Sie eine andere starten, könnten Sie in einer Situation enden, in der Sie mehrere Anforderungen haben, die gemeinsam genutzte Ressourcen verbrauchen und sich gegenseitig hungern. Sie können dieses Problem vermeiden, indem Sie warten, bis die nächste Anforderung so lange geplant ist, bis die letzte Anforderung abgeschlossen ist:

// 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);
});
})();

Der Einfachheit halber habe ich den Erfolgsrückruf für die Planung verwendet. Der Nachteil ist, dass eine fehlgeschlagene Anforderung die Aktualisierungen anhält. Um dies zu vermeiden, können Sie stattdessen den vollständigen Rückruf verwenden:

(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);
}
});
})();

27 für die Antwort № 2

Ja, Sie können entweder das JavaScript verwenden setTimeout() Methode oder setInterval() Methode, um den Code aufzurufen, den Sie ausführen möchten. So machen Sie es mit 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);
});

3 für die Antwort № 3

Sie können verwenden setTimeout oder setInterval.

Der Unterschied ist - setTimeout löst Ihre Funktion nur einmal aus und muss dann erneut eingestellt werden. setInterval löst immer wieder einen Ausdruck aus, sofern Sie ihn nicht anhalten