Löschen der Anzeige vor neuer Ausgabe

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Benutzeravatar
noisefloor
User
Beiträge: 2234
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Löschen der Anzeige vor neuer Ausgabe

Beitragvon noisefloor » Donnerstag 5. Februar 2009, 21:12

Hallo,

folgendes: innerhalb eines CGIs werden Daten auf Korrektheit geprüft. Wenn n.i.O. wird eine Funktion aufgerufen, die eine Fehlermeldung ausgibt (in Form einer HTML Seite).

Das funktioniert auch, aber die Ausgabe der Fehlermeldung erfolgt direkt oberhalb der bereits angezeigten HTML-Seite. D.h. man sieht die Fehlermeldung und direkt darunter noch die Eingabemaske.

Kann man aus dem CGI heraus den Browser irgendwie veranlassen, die bereits angezeigte Seite zu löschen, so dass nur die Fehlerseite angezeigt wird?

Gruß, noisefloor
Benutzeravatar
Hyperion
Moderator
Beiträge: 7471
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Beitragvon Hyperion » Donnerstag 5. Februar 2009, 21:18

Kann es sein, dass Du die Mechanismen von http, cgi und einem Browser nicht verstanden hast?

Du erzeugst doch durch das cgi eine komplett neue Seite! Lass das Formular halt einfach weg, dann hast Du doch das, was Du willst.
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Beitragvon Dauerbaustelle » Donnerstag 5. Februar 2009, 21:21

Hallo,

warte mal... du übermittelst Zeugs an den Browser, bevor du die Abfrage auf dem Server richtig fertigverarbeitet hast?
Das ist schlecht, weil unkomfortabel und bringt eben solche Probleme mit sich. Verarbeite die Abfrage erstmal auf dem Server fertig, dann kannst du nämlich entscheiden, ob du eine Fehlermeldung zurückgeben willst oder Content.

Falls du das nicht so willst: Du könntest ein Javascript schicken, das den "richtigen" Content versteckt/löscht. Aber das sind dreckige Hacks..
Benutzeravatar
noisefloor
User
Beiträge: 2234
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Beitragvon noisefloor » Donnerstag 5. Februar 2009, 21:38

Hallo,

Du erzeugst doch durch das cgi eine komplett neue Seite! Lass das Formular halt einfach weg, dann hast Du doch das, was Du willst.


DAS dachte ich auch - bis eben. Die Prüfung der Daten erfolgt nach dem Klick auf "Senden", also die Eingabemaske ist dann schon "fertig".

Könnte es auch damit zusammenhängen, dass nach der Ausgabe der Fehlermeldung sys.exit() aufgerufen wird?

Gruß, noisefloor
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Beitragvon Dauerbaustelle » Donnerstag 5. Februar 2009, 21:47

Ja, das könnte es. Es ist sowieso schlecht, wegen einer Exception das CGI-Script zu beenden :)
Benutzeravatar
noisefloor
User
Beiträge: 2234
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Beitragvon noisefloor » Donnerstag 5. Februar 2009, 21:55

Hallo,

yup, es ist wohl schlauer, die Fehlermeldung beim nächsten Selbstaufruf des CGI auszugeben als im aktuell laufenden CGI zu springen...

Werde ich mal probieren bzw. einbauen.

Gruß, noisefloor
Benutzeravatar
Hyperion
Moderator
Beiträge: 7471
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Beitragvon Hyperion » Donnerstag 5. Februar 2009, 22:45

noisefloor hat geschrieben:DAS dachte ich auch - bis eben. Die Prüfung der Daten erfolgt nach dem Klick auf "Senden", also die Eingabemaske ist dann schon "fertig".

Ich bin unfähig Deinen Schilderungen zu folgen! Daher schildere ich das mal so, wie ich den Prozess mir nach Deinen Angaben vorstelle:

1.) Du hast eine HTML-Seite mit einem Formular darin.
2.) Du klickst auf "senden" (also den submit-Button)
3.) per http werden Deine Daten an den Webserver übertragen, der darufhin ein cgi-Script aufruft.
4.) Im Script verarbeitest Du die Daten und gibst dann anhand der Daten etwas aus.

Wo liegt denn nun das Problem? In Schritt 4 musst Du doch lediglich genau das HTML generieren, was Du haben willst?!?
Benutzeravatar
noisefloor
User
Beiträge: 2234
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Beitragvon noisefloor » Freitag 6. Februar 2009, 16:51

Hallo,

nein, das CGI-Skript ruft sich selber auf, weil die Dateneingabe nicht "in einem Rutsch" erfolgen kann (das Skript ist eine Eingabemaske für Google Charts, Map-Diagramme). Das habe ich oben nicht erwähnt, ist aber für das Problem hier wohl ziemlich relevant, sorry.

Aber ich denke, dass ich die Lösung habe. Im aktuellen Skript erfolgt Prüfung und Ausgabe bzw. Neugenerierung in der falschen Reihenfolge. Schon doof, wenn man den Ablauf des eigenen Programms nicht richtig durchblickt... :oops:

Trotzdem natürlich Danke für eure Antworten. :-)

Gruß, noisefloor
Benutzeravatar
Hyperion
Moderator
Beiträge: 7471
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Beitragvon Hyperion » Samstag 7. Februar 2009, 00:41

noisefloor hat geschrieben:Hallo,

nein, das CGI-Skript ruft sich selber auf, weil die Dateneingabe nicht "in einem Rutsch" erfolgen kann

Habe ich etwas anderes behauptet? Ich schrieb:
1.) Du hast eine HTML-Seite mit einem Formular darin.

Ob diese nun schon vorher durch ein CGI generiert wurde ist doch vollkommen egal!
Benutzeravatar
noisefloor
User
Beiträge: 2234
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Beitragvon noisefloor » Montag 9. Februar 2009, 09:54

Hallo,

ok, so gesehen... :wink:

Kann man hier Threads auf gelöst setzen oder hat phpBB die Funktion nicht?

Gruß, noisefloor
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 9. Februar 2009, 10:07

noisefloor hat geschrieben:Kann man hier Threads auf gelöst setzen oder hat phpBB die Funktion nicht?

Siehe Forenregeln, dort ists erklärt.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
noisefloor
User
Beiträge: 2234
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Beitragvon noisefloor » Dienstag 10. Februar 2009, 20:13

Hallo,

ok, dann fassen wir mal zusammen: Die Lösung war die Änderung des Skriptablaufs.

Gelöst. :-)

Gruß, noisefloor

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder