2010-12-28 19 views
37

Ich fragte mich, ob jemand mir helfen könnte. Ich habe eine PHP-Seite, die Zeilen aus einer Datenbank ausgibt. Ich möchte es alle 30 Sekunden über jquery/ajax aufrufen. Aber ich möchte auch die Seite jederzeit aufrufen können, damit, wenn ich einen Datensatz über das Formular hinzufüge, sobald das Formular übermittelt wird, möchte ich die Seite über Ajax aufgerufen, um die Ergebnisse sofort zu aktualisieren. Kann mir jemand in die richtige Richtung zeigen oder einen Basiscode zur Verfügung stellen, damit ich versuchen kann, das herauszufinden? Immer noch sehr neu in jQuery/Ajax.Jquery/Ajax Anruf mit Timer

Antwort

67

Wenn Sie etwas auf einen Timer einstellen möchten, können Sie JavaScripts setTimeout oder setInterval Methoden verwenden:

setTimeout (expression, timeout); 
setInterval (expression, interval); 

Wo expression eine Funktion ist und timeout und interval ganze Zahlen in Millisekunden sind. setTimeout startet den Timer einmal und führt die expression einmal, während setInterval die expression jedes Mal ausgeführt wird, die interval passiert.

in Ihrem Fall So wäre es so etwas wie dies funktioniert:

setInterval(function() { 
    //call $.ajax here 
}, 5000); //5 seconds 

Was die Ajax geht, sehen jQuery ajax() method. Wenn Sie ein Intervall ausführen, gibt es nichts, was Sie daran hindern könnte, dasselbe ajax() von anderen Stellen in Ihrem Code aufzurufen.

+0

Danke für die Antwort! Dein Sprichwort, wenn ich den Code oben verwende, um den Ajax-Anruf alle 5 Sekunden zu aktualisieren, dann habe ich auf der gleichen Seite ein Formular, das jemand ausfüllt, sobald er fertig ist, den Datensatz hinzufügend, kann ich die selbe setInterval-Funktion oben aufrufen haben 2 Instanzen dieser Funktion gleichzeitig ausgeführt? – John

+8

Sie möchten also, dass ein Intervall alle 30 Sekunden ausgeführt wird * bis * ein Benutzer eine Formularübergabe initiiert ... und danach ein neues Intervall erstellt? Das ist auch möglich. 'setInterval()' gibt eine ganze Zahl zurück, die die ID des Intervalls ist. Wenn Sie diese ID in einer Variablen speichern, können Sie 'clearInterval (id)' aufrufen, wodurch der Fortschritt gestoppt wird. Dann können Sie den Aufruf 'setInterval()' wieder in Kraft setzen, nachdem Sie Ihre Ajax-Formularübertragung abgeschlossen haben. – treeface