molily: SSI mit setTimeout

Beitrag lesen

Ich möchte eine Variable, die in '/server/variable' steckt alle 10 Sekunden aktualisieren lassen ohne die ganze Website neu aufbauen zu müssen.

SSI ist ein Präprozessor, der serverseitig ausgeführt wird und letztlich statischen Code ausspuckt. Der Webserver liest die Datei ein, findet SSI-Anweisungen und ersetzt diese durch deren Ausgabe. Man kann mit SSI also HTML (oder eben JavaScript) erzeugen.

PHP und andere serverseitigen Sprachen funktionieren genauso. Diese Programme werden auf dem Server ausgeführt, wenn eine Anfrage hereinkommt. Sie generieren dann irgendeine Ausgabe und beenden sich. Danach wird die Ausgabe an den Browser geschickt. Der bekommt kein SSI, PHP usw. zu Gesicht.

Der Browser bekommt lediglich das statische Resultat zugeschickt. Wenn du var z = "<!--#include virtual='/server/variable' -->"; notierst, dann hat z immer den Wert, den es zum Zeitpunkt der Ausführung des SSI-Codes auf dem Server hatte, bevor der Code überhaupt zum Browser geschickt wurde. Schau mal in den generierten Quellcode, den der Browser bekommt! Dieser ist maßgeblich. Da steht einfach ein fester String. Aus der obigen Anweisung wird beispielsweise var z = "irgendwas". Wenn du diese JavaScript-Anweisung nun mehrfach ausführst, klar, dann wird nichts erneut vom Server geladen, sondern z hat immer denselben Wert.

Was du suchst ist XMLHttpRequest. Siehe auch Stefan Münz’ Ajax-Tutorial sowie http://molily.de/js/ajax.html.
setTimeout kannst du weiterhin verwenden. Allerdings erzeugst du regelmäßig einen XMLHttpRequest und lädst dir damit Daten vom Server. Diese kannst du dann in der Variable speichern.

Grüße, Mathias