AJAX-Intervall Aktualisieren?
Ich versuche, mich ein AJAX-update-Funktion etwa 30 Sekunden. Ich habe eine einfache version, getan, hier ist der code.
var refInterval = window.setInterval('update()', 30000); //30 seconds
var update = function() {
$.ajax({
type : 'POST',
url : 'post.php',
success : function(data){
$('.voters').html(data);
},
});
};
Dies funktioniert, jedoch beim Aufruf der Funktion wird ZUERST aufgerufen, ich will es nicht, warten Sie 30 Sekunden, ich will einfach nur die Funktion aufrufen, dann warten Sie 30 Sekunden, wieder anrufen, warten Sie 30 Sekunden, wieder anrufen, etc. Keine Hilfe?
InformationsquelleAutor bin0 | 2014-06-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erwägen Sie die Verwendung
setTimeout
statt - es ist mehr zuverlässig.setInterval
Timer können Stapel, wenn das Fenster nicht den Fokus haben-und dann laufen alle auf einmal, wenn es den Fokus erhält wieder zurück. MitsetTimeout
sorgt auch dafür, dass Sie nicht bekommen, mehrere AJAX-requests in eine Warteschlange gestellt, wenn die ersten Blöcke aus irgendeinem Grund.Starten Sie die Schleife sofort, verwenden Sie eine IIFE ("sofort aufgerufen, die Funktion "Ausdruck") wickelte sich um die Funktion:
p.s. nicht die Verwendung von string-Argumenten zu
setInterval
odersetTimeout
- geben Sie einfach die Funktionsreferenz direkt.setTimeout
nachdem die Funktion beendet ist, so wird die Funktion nie versucht zu laufen, während es bereits läuft (unwahrscheinlich, ich weiß, aber ich, immer schützen in der gleichen Weise).Danke Kumpel. dein code hilft mir, mich zu erreichen, mein Ergebnis. Ich erreicht in etwas verschiedener Weise. Funktion refresh(refreshSeconds) { timer = setInterval(function () { $.ajax({ url: '@Url.Aktion("ActionName", "ControllerName")', type: 'POST', success: function (result) { }, }); }, (refreshSeconds * 1000)); }
das verwenden von
setInterval
ist eine schlechte Idee, für die oben aufgeführten GründeErsetzt habe ich es jetzt mit setInterval. Funktioniert perfekt.. Klasse!
InformationsquelleAutor Alnitak
Rufen Sie einfach aktualisieren, nachdem Sie es definieren:
InformationsquelleAutor DavidT
Update aufrufen einmal (auf Dokument bereit) bevor Sie es mit dem Intervall:
InformationsquelleAutor Palmer
Aufrufen der Funktion vor der Einstellung des Timers.
Etwa so:
InformationsquelleAutor wbennett
gerade auf dem setTimeout in Ihre successhandler und es funktioniert wie Charme
InformationsquelleAutor john Smith