Formulardaten ins andere Fenster übergeben

Das mit dem window.opener, wie soll ich das machen?
Also das ganze ist kompliziert... Also es gibt ne ganze Reihe von Links und jeder Link hat eigene ID. Beim klicken soll sich ein PopUp öffnen wo ein Formular drinne ist und die ID des Linkes wird dann per GET übergeben. Es werden mit Hilfe dieser ID Daten aus MySQL geholt. Das Formular bekommt auch dann die per GET übergebene ID zugewiesen (<form id="<?=$_GET['id'];?>" ...>). Nach dem Abschicken des Formulars soll sollen alle Daten an die Elternseite X übergeben werden, gleichzeitig soll sich das PopUp schließen und die Daten sollen direkt in der Elterseite X verarbeitet werden.

oder ne zweite Möglichkeit: ^^^^^... Formular soll ganz normal abgeschickt werden und das Fenster soll sich schließen und gleichzeitig die Elternseite X aktualisieren.

oder andere Ideen... Wie gesagt, Layer geht nicht, wegen der Reihe von Links und den Daten die vom MySQL geholt werden...


Vielen Dank für alles...
smile.gif
 
Hallo,
ich habe lange gesucht und nun was gefunden:
CODE
<script type="text/javascript">
function delete(url) {
windowName = "";
options = "";
options += "top=1,";
options += "left=180,";
options += "toolbar=0,";
options += "location=0,";
options += "directories=0,";
options += "status=0,";
options += "menubar=0,";
options += "scrollbars=0,";
options += "resizable=1,";
options += "width=400,";
options += "height=600";
win = window.open(url, windowName , options);
if (!win.opener) {
win.opener = window;
}
};
</script>



aber wenn ich jetzt einen Link dazu erstelle ...href="javascript:delete('hier die url')"... und drauf klicke
dann kommt eine JavaScript Fehlermeldung "[string] kann nicht gelöscht werden, Zeile 1, Zeichen 1"...


Woran liegt das? Hat jemand eine Idee?


Vielen Dank schon mal im Voraus.
 
Ok..
Ich hab das nun so gemacht:

Hauptfenster:
<script type="text/javascript">
function oeffnen() {
var wert = window.open("url.html", "", "width=XX,height=XX");
}
</script>


PopUp-Fenster:
<script type="text/javascript">
function fenster() {
window.opener.location.reload();
window.close();
}
</script>


und im Formular (popUp Fenster):
.. onsubmit="fenster()"


und es klappt.. Aber der reload() ist bisschen zu schnell... kann man so machen, dass der reload() erst zum Beispiel nach 5 Sekunden startet nachdem das Formular abgesendet wurde?
Danke schon mal...
 
Einfach für dich wäre es ajax zu verwenden, so verzichtest du auch auf popups

http://developer.mozilla.org/de/docs/AJAX:Getting_Started

bisschen modifizierter Code aus dem Beispiel von oben
CODE var http_request = false;

function macheRequest(url) {

http_request = false;

if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');
// zu dieser Zeile siehe weiter unten
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}

if (!http_request) {
alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
return false;
}
http_request.onreadystatechange = alertInhalt;
http_request.open('GET', url, true);
http_request.send(null);

}

function alertInhalt() {

if (http_request.readyState == 4) {
if (http_request.status == 200) {
//layer füllen
document.getElementById('layer').innerHTML=http_request.responseText;
} else {
alert('Bei dem Request ist ein Problem aufgetreten.');
}
}

}

function open_layer() //layer aufrufen
{
macheRequest('url.html');
}



So hast du das Formular im Hauptfenster, benutzt keine Popups und machst es nicht extrem umständlich
smile.gif


severin
 
Hey...
Vielen Dank euch beiden...

@Manuel
Leider funktioniert das irgendwie bei onsubmit nicht..


@Severin
Irgendwie bekomme ich einen Fehler... document.getElementById.. usw..
Das mit der layer id wo soll ich das reinmachen?
Ist das jetzt so etwas, dass per Ajax die URL so zu sagen "eingefügt" wird?


Nochmals Vielen Dank...
 
Eventell funktioniert es so.
War nur gerade die Idee, dir mir so im Kopf herumschwirrte. (Nicht getestet)

CODE
PopUp-Fenster:
<script type="text/javascript">
function DeinReload {
window.opener.location.reload();
window.close();
}
function fenster() {
window.setTimeout("DeinReload()",3000);
}
</script>



Grüßle
 
Hallo Marvin,

Vielen Dank, aber das hab ich gemacht und es hat nicht funktioniert...
sad.gif

Emm.. Kann man per Ajax eine URL "einfügen"? vieleicht wäre das ne Möglichkeit...?
 
probiers mal so:

<a href="#" onClick="neuesFenster=window.open('http://www.domain.de/seite-y.php?id='<?php echo $variable;?>'neuesFenster',' toolbar=yes, location=yes, directories=yes, status=yes,menubar=yes, scrollbars=yes, resizable=yes, width=600, height=400, left=50, top=50'); return false;">neuer Link!</a>
 
Nein, es geht hier um window.opener, sodass sich die Haputseite nach dem Absenden des Formulars im PopUp aktualisiert...
Lies mal von anfang an..
wink.gif
 
QUOTE (pl_90 @ Do 9.08.2007, 14:38) Hey...
Vielen Dank euch beiden...

@Manuel
Leider funktioniert das irgendwie bei onsubmit nicht..


@Severin
Irgendwie bekomme ich einen Fehler... document.getElementById.. usw..
Das mit der layer id wo soll ich das reinmachen?
Ist das jetzt so etwas, dass per Ajax die URL so zu sagen "eingefügt" wird?


Nochmals Vielen Dank...

Du musst irgendwo im Quellcode den Layer einfügen als z. B.

CODE <div id="layer"></div>


sollte dann funktionieren, wenn du die Url angepasst hast
Severin
 
Ok, danke schön.. es hat funktioniert, nur sag mir jetzt bitte wie ich den layer positionieren kann und dann auch per Link wieder schließen kann..
biggrin.gif
Danke schön...
 
Zum positionieren benutzt du css(z. b. style="position:absolute; left:100px; top:100px"), zum schließen auch z. b.

CODE
function close_layer()
{
document.getElementById('layer').style.display='none';
}



oder um nur den inhalt wegzumachen


CODE
function close_layer()
{
document.getElementById('layer').innerHTML='';
}



PS: schau mal auf selfhtml.org
 
Ach das??
ohmy.gif
blink.gif

Ich dachte, weil die URL eingefügt wird, muss man irgendwas spezielles machen...
laugh.gif

Ok.. danke, das hätte ich wirklich selber machen können, wenn ich anders gedacht hätte..
laugh.gif
biggrin.gif
 
Zurück
Oben