Seite 1 von 1
Browseranzeige per CGI aktualisieren
Verfasst: Montag 7. Februar 2005, 23:29
von alpha
Hallo Leute,
ich hab mal eine vieleicht wieder merkwürdige Frage.
Ist es in einem CGI-Script möglich die HTML-Seite zu aktualisieren ohne, daß
der Benutzer immer auf den Reload-Button des Browsers klicken muß?
Ist das mal wieder eine von meinen ungewöhnlichen Anforderungen??
Vieleicht kann mir jemand einen kleinen Codeschnipsel schicken falls dies doch möglich ist.
Danke schon mal.
alpha
Verfasst: Montag 7. Februar 2005, 23:57
von BlackJack
Vorweg: Ich habe eigentlich keine konkrete Ahnung davon.
Aber soweit ich weiss kann man vom Server eine Seite auch als "Multipart" senden und so immer aktualisierte Seiten nachschieben. Suchworte für Google wären wohl "CGI server push multipart".
Verfasst: Dienstag 8. Februar 2005, 00:38
von Leonidas
Jup, dazu brauch man aber kein CGI Script sondern HTML

<meta http-equiv="refresh" content="
SEKUNDEN; URL=
URL">
Als Beispiel mal eine Seite sie sich nach 25 Sekunden selbst wieder aufruft:
FM4 Listings.
Verfasst: Dienstag 8. Februar 2005, 07:12
von jens
Verfasst: Mittwoch 9. Februar 2005, 00:00
von alpha
Danke erst mal für die Antworten. Leider hab ich noch ein Problem. Wenn ich die Zeile
<meta http-equiv="refresh" content="25; URL=stream">
in mein Script
Code: Alles auswählen
#!/usr/bin/python
from time import *
print "Content-Type: text/html" # Header
print
print "<html><head><title> CGI-Script </title></head>"
print "<meta http-equiv="refresh" content="25; URL=stream">"
print "<body><h1>Datum und Zeit</h1>"
print "Es ist ", ctime( time() ) + "."
print "</body></html>"
einbinde bekomm ich ne Syntax Fehlermeldung vom Server.
File "/home/alpha/scripts/python/cgi-bin/mycgi.py", line 6
print "<meta http-equiv="refresh" content="25; URL=stream">"
^
SyntaxError: invalid syntax
amd64 - - [08/Feb/2005 23:56:39] CGI script exit status 0x100
Hat vieleicht jemand ne Erklärung dafür???
Danke schonmal für die Mühe.
alpha
Verfasst: Mittwoch 9. Februar 2005, 08:28
von Gast
Die Anführungszeichen sind falsch. So geht's:
Code: Alles auswählen
print '<meta http-equiv="refresh" content="25; URL=stream">'
Oder so:
Code: Alles auswählen
URL = "test.de"
print '<meta http-equiv="refresh" content="25; URL=%s">' % URL
Verfasst: Mittwoch 9. Februar 2005, 08:30
von Gast
Anonymous hat geschrieben:Die Anführungszeichen sind falsch. So geht's:
Code: Alles auswählen
print '<meta http-equiv="refresh" content="25; URL=stream">'
Oder so:
Code: Alles auswählen
URL = "test.de"
print '<meta http-equiv="refresh" content="25; URL=%s">' % URL
Benutze mal
import cgitb ; cgitb.enable() in deinem Skript, dann siehtst du auch eine richtige Fehlermeldung. s.
http://www.python.org/doc/current/lib/module-cgitb.html
Verfasst: Mittwoch 9. Februar 2005, 08:32
von jens
Soory, war nicht eingeloggt, deswegen zwei Beiträge, die eigentlich einer sein sollen

Verfasst: Mittwoch 9. Februar 2005, 09:48
von Leonidas
Danvon mal abgesehen, dass es nicht stream sondern der Name deines Scriptes sein sollte.. denn mit meta refresh kann man auch auf andere Seiten umleiten.
Verfasst: Donnerstag 10. Februar 2005, 00:28
von alpha
Super,
vielein Dank euch allen. Jetzt klappt es. Ich war immer der Meinung, daß
" und ' in Python das gleiche bewirken. Man lernt eben nie aus.
Vielen Dank nochmal.
alpha

Verfasst: Donnerstag 10. Februar 2005, 16:52
von BlackJack
Nun, sie bewirken auch das gleiche. Man startet/beendet damit Zeichenketten. Schau Dir nochmal den Quelltext hier an, der den Syntaxfehler provoziert. Da wirst Du sehen, das ein " mitten in einer Zeichenkette, die mit " angefangen wurde eben diese Zeichenkette dort beendet! Also kannst Du nur das jeweils andere Zeichen innerhalb einer Zeichenkette verwenden oder musst sie eben mit \ schützen.
Verfasst: Donnerstag 10. Februar 2005, 17:14
von Leonidas
Alternativ gibt es auch noch die Trippel Strings, die da etwas robuster sind:
Verfasst: Freitag 11. Februar 2005, 07:13
von jens
Leonidas hat geschrieben:Alternativ gibt es auch noch die Trippel Strings
Wobei diese den großen Vorteil haben, das man damit über eine Zeile hinaus kommt. Leider wird dabei das Einrücken nicht beachtet

Somit ist entweder der Code oder die Ausgabe etwas häßlich:
Ausgabe:
ODER
Ausgabe:
Verfasst: Freitag 11. Februar 2005, 12:01
von Leonidas
Ja, das habe ich leider auch bemerkt
