PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Neues Fenster öffnen, oder nicht?


rotalever
2009-01-22, 17:52:59
Ich habe da eine Seite A, wo ein Formular drin ist, das per POST Daten an diese Seite liefert und somit den Inhalt der Seite A verändert. Nach dem POST wird die neue Seite A dem Benutzer präsentiert und er kann sie weiter über das Formular ändern. Soweit, so gut.

Nun ist es aber so, dass ich weitere Links auf der Seite A zu einer externen Seite X platziere. Jetzt sehe ich zwei Möglichkeiten. 1. Entweder öffnen die Links zu Seite X in einem neuen Fenster (via target="_blank"), oder 2. die Links zu X öffnen im selben Fenster und nehmen somit den Platz von A im Browserfenster ein.

Version 1 hat den Nachteil, dass unerfahrene Benutzer verwirrt werden und erfahrene Benutzer genervt sind. Also eher schlecht.

Version 2 wäre eigentlich gut, hat aber den Nachteil, dass wenn die Person den Zurück-Button im Browser drückt um von X zurück nach A zu gelangen, dass dann der Browser möglicherweise den POST request erneut auslösen will. Das ist an sich kein Problem, da durch ein zweites Auslösen des Requests keine Daten verändert werden, aber der Benutzer bekommt so eine Warnmeldung, dass Daten neu gesendet werden müssen, was wieder zu Verwirrung führen kann.

Wie könnte ich das lösen? Formular auf GET umstellen (könnte das dann wieder Probleme mit Browser-Caches bringen)? Gibt es da irgendwelche Tricks, die ich nicht kenne?

edit: Ich hab es gerade noch einmal getestet. Zumindest im Firefox bekomme ich gar keine Wahnung wegen des POST requests. Woran liegt denn das?

Kinman
2009-01-22, 18:35:06
Wenn ich Links in Formularen anzeige, dann achte ich darauf, dass der Nutzer sein eingegebenen und noch nicht abgesendeten Daten keinenfalls verliert. Der IE ist nämlich nicht fähig ein ausgefülltes Formular wieder ausfüllen, wenn der Benutzer mittels "Zurück" wieder zum Formular navigiert.
Je nachdem wie die Umstände liegen, öffne ich die Links in einem Popup, mittels target"_blank" oder in einer Lightbox.
Eventuell hilft Dir dieser Gedankengang weiter.

Zu Deinem direkten Problem:

1. Möglichkeit:
Formular mittels GET absenden und dann die URL sofort neu laden z.B.

<meta http-equiv="refresh" content="0; URL=<?php echo($_SERVER['PHP_SELF'] . '?' . $_SERVER['QUERY_STRING']); ?>">


2. Möglichkeit
Speicher die Daten in einer Session, lade die Seite neu und lies die Daten aus der Session aus.

mfg Kinman

rotalever
2009-01-22, 20:10:58
Wenn ich Links in Formularen anzeige, dann achte ich darauf, dass der Nutzer sein eingegebenen und noch nicht abgesendeten Daten keinenfalls verliert.
Das ist wohl nicht das Problem. Die Links sind sowieso weiter unten auf der Seite zu finden und das Formular besteht nur aus einer Eingabebox.

Je nachdem wie die Umstände liegen, öffne ich die Links in einem Popup, mittels target"_blank" oder in einer Lightbox.
Eventuell hilft Dir dieser Gedankengang weiter.

Lightbox geht leider aus anderen Gründen nicht, und Popup wollte ich ja wie gesagt nur sehr ungern, es müsste dann auch schon ein richtiges vollständiges Fenster sein.


1. Möglichkeit:
Formular mittels GET absenden und dann die URL sofort neu laden z.B.

Wofür denn das neuladen der Seite? Möglicherweise habe ich mich falsch ausgedrückt. Es ist so, dass wenn der Benutzer eine/die gleiche GET (bzw. POST) Anfrage zweimal auf diesem Formular ausführt, dass das dann keine Fehler produziert. Wurde die Anfrage nämlich einmal ausgeführt, so hat sie beim zweiten Mal schlicht keinen Effekt mehr.

Speicher die Daten in einer Session, lade die Seite neu und lies die Daten aus der Session aus.
Versteh ich jetzt überhaupt nicht, aber vielleicht auch nicht so wichtig.

Also mit GET scheint es keine Probleme mit irgendwelchen Browsercaches zu geben? Dann würde ich es einfach auf GET umstellen und die Sache ist gelaufen.

Kinman
2009-01-22, 20:32:14
Wofür denn das neuladen der Seite? Möglicherweise habe ich mich falsch ausgedrückt. Es ist so, dass wenn der Benutzer eine/die gleiche GET (bzw. POST) Anfrage zweimal auf diesem Formular ausführt, dass das dann keine Fehler produziert. Wurde die Anfrage nämlich einmal ausgeführt, so hat sie beim zweiten Mal schlicht keinen Effekt mehr.

Ich dachte, der IE bringt trotzdem die Meldung "Diese Seite kann nicht ohne Senden neuer Informationen....". Tut er aber nicht, ich hab es jetzt getestet.

mfg Kinman

rotalever
2009-01-22, 21:24:17
Ich dachte, der IE bringt trotzdem die Meldung "Diese Seite kann nicht ohne Senden neuer Informationen....". Tut er aber nicht, ich hab es jetzt getestet.
Achso Ok, das meintest du. Scheinbar tritt es nur bei POST auf.