Formulardaten an opener schicken
Michael Huhn
- html
Ich weiß, mit solchen Frame-Fragen macht man sich hier nicht gerade beliebt, aber ich habe keine beantwortung dieses Problems gefunden.
Ich öffne aus einer seite a.php per window.open ein popup suche.php. Dort steht ein umfangreiches Formular (mit multiple-selects usw.). Die Daten aus diesem Suchformular sollen nun an a.php geschickt werden, ohne ein drittes fenster zu öffnen. Leider gibt es kein "_opener" für das Target-Attribut des Form-Tags. Auch form.target=opener.name war ein erfolgloser Ansatz (name wäre wohl sowieso kein Frame- sondern ein Fenstername).
Wie kann ich vorgehen?
Hallo Michael,
Wie kann ich vorgehen?
... noch mal genau nachdenken, was eigentlich passieren soll; insbesondere, über welche Kanäle die Daten fließen sollen/müssen. Mit Frames hat das Ganze eigentlich nicht viel zu tun.
a.php ist eine Datei, die auf einem Web-Server liegt und die - Wunder der Technik - noch dynamisch manipuliert werden kann, ehe sie beim Client auftaucht. Wenn sie dort steht, ist sie (ohne Client-seitiges Scripting) statisch. Wenn Du Formular-Daten absendest (via "submit()") tauchen diese beim Server auf, nicht in einem Fenster des Clients. Wenn der Client nun trotzdem etwas mitbekommen soll, muss er die (inhaltlich manipulierte) Seite a.php neu laden (z. B. mittels "opener.parent.FrameName.location.reload();" und dann "self.close();" im Popup-Fenster). Client-seitig könntest Du lediglich über JavaScript auf (bestehende) Element-Eigenschaften, Attribute, Funktionen, ... zugreifen. Aber das hat nun eigentlich nicht wirklich was mit einem Formular-Submit zu tun, sondern eher mit einem Event-Handler ("onChange()" o. ä.) in Deinem Popup-Fenster.
Ciao
Hans-Peter
Formular-Daten tauchen beim Server auf, nicht in einem Fenster des Clients. Wenn der Client nun trotzdem etwas mitbekommen soll, muss er die (inhaltlich manipulierte) Seite a.php neu laden
Danke für die Antwort, lösen konnte ich das Problem leider noch nicht. Ich brauche irgendwo einen php-Block, der die Fomulardaten verarbeitet und dann ein Array mit den Ergebnisse erstellt. Die Ergebnisse will ich über die a.php im ursprünglichen (opener-) Frame darstellen. Mein Problem ist, dass ich die Daten des Arrays nicht in der Datenbank speichern will, da das zu umständlich wäre und ja sowieso nur session-temporär brauchbar ist.
2 Möglichleiten: Entweder ich verarbeite die Daten in der a.php im ursprünglichen Frame. Das wollte ich eigentlich machen, dann müsste ich aber die Formulardaten direkt an das Frame schicken, was ja scheinbar nicht geht.
Oder aber, ich verarbeite in der popup.php, habe dort dann das array. Dann muss ich allerdings das array irgendwie der a.php übergeben, bevor ich den opener reloade. Ich dachte, ich könnte einfach eine session-variable in der popup.php und in der a.php gleich benennen und dann darüber kommunizieren, aber das scheint nicht zu gehen (oder aber ich mache was falsch).
Was meinst du, wie krieg ich die Daten dahin, wo ich sie haben will?