buggy: Formular per Javascript übergeben und in opener Fenster zurück

Hallo alles zusammen

Ich möchte mich erst mal kurz vorstellen,
Mein Name ist Buggy und als Dummes Hobby habe ich mir eine Internetseite gebastelt.
Mit PHP und MySql. Nun habe ich ein Problem bei dem ich nicht weiterkomme. Ich habe auch schon viel darüber gelesen bekomme es aber leider nicht hin. Bitte entschuldigt wenn ich das ganze etwas unprofessionell  schreibe, aber das ist einfach nicht mehr ganz mein Ding.
So nun zum Thema.

Ich öffne von meinem Hauptfenster aus ein kleines Fenster in dem ich eine Datei aussuchen möchte (zum uploaden) und ein Textfeld bereitstelle. Diese Daten möchte ich dann beim abschicken mit dem Formular an eine neue URL versenden welche im opener Fenster geöffnet werden soll.

Das mit dem öffnen im opener Fenster funktioniert zwar, aber das versenden des Formulars gleichzeitig macht mir große Probleme.

Ich hoffe ich habe das einigermaßen Verständlich geschrieben ohne dass sich viele über mein Wissen aufregen müssen.

Kann mir hierbei jemand helfen, danke, Buggy

Hier das geöffnete Fester:

<script language="JavaScript" src="../scripts/functions.js" type="text/javascript"></script>
<script language="JavaScript">

function FensterZu(url)
{
opener.location.href = url;
window.close();
}

</script>

<link href="style.css" rel="stylesheet" type="text/css">

<td class="ueberschrift" > Upload System</td>

<form name="form1" enctype="multipart/form-data" method="post" action="FensterZu(this.'intern.php?PID=detailanzeige.php&dateispeichern=ja&datei=datei&art_nr=<?php echo"$art_nr" ?>&ziel=<?php echo"$ziel" ?>'); return false;">
<?php
  if (!file_exists("../uploads/files/$art_nr")) {
    mkdir("../uploads/files/$art_nr");                                                  //Verzeichnis anlegen
    }
  $ziel = "../uploads/files/$art_nr";
  echo $ziel;
?>
<table id="dateieinf" class="tab_vorgabe" width="720" >
  <tr>
    <td width="220" class="tab_pgcollor5"> Dateien hinzuf&uuml;gen  </td>
    <td class="tab_pgcollor5-1"><a href="#" onClick="oeffnefenster('hilfe.php?helpID=dateiupload','HelpSystem','scrollbars=yes,resizable=yes,width=500,height=400')"> Hilfe benötigt?</a></td>
  </tr>

<tr>
    <td width="220" class="tab_pgcollor" >Dateibeschreibung eingeben    </td>
    <td class="tab_pgcollor2" >
  <textarea name="dateibeschreibung" cols="60" rows="2" id="dateibeschreibung" style="width: 400px;"></textarea>
    </td>
  </tr>
  <tr>
    <td width="220" class="tab_pgcollor">Datei Suchen</td>
    <td class="tab_pgcollor2" ><input type="file" size="50" name="my_field" value="" style="width: 350px;" /></td>
  </tr>
  <tr>
    <td width="220" class="tab_pgcollor" >&nbsp;</td>
    <td class="tab_pgcollor2" >
  <input type="submit" name="Submit2" value="Speichern" />
  <input type="hidden" name="action" value="simple" />
    <!--<input type="hidden" name="dateieintrag" value="dateieintrag" />  nicht anzeigen nach Daten ändern-->
  <input name="ziel" type="hidden" id="ziel" value="<?php echo"$ziel" ?>">
      <input name="art_nr" type="hidden" id="art_nr" value="<?php echo"$art_nr" ?>">

  <!-- Mit diesem Link funktionert es zwar ins aufgerufene Fenster zurück mit der eingegebenen URL, aber die Formulardaten werden nicht mit übertragen -->	  
  <td> <a href="intern.php?PID=detailanzeige.php&dateispeichern=ja&datei=datei&art\_nr=<?php echo"$art\_nr" ?>&ziel=<?php echo"$ziel" ?>"onclick="FensterZu(this.href); return false;">Speichern in altes Fenster</a></td>  

</td>
  </tr>

</table>
</form>

  1. aber das versenden des Formulars gleichzeitig macht mir große Probleme.

    Und diese wären konkret?

    1. aber das versenden des Formulars gleichzeitig macht mir große Probleme.

      Und diese wären konkret?

      Dass ich hier nicht den richtigen Ansatz finde, d. h. dass ich nicht weiß wie ich gleichzeitig auf den opener zurückkomme und das Formular mit versenden kann. Leider finde ich da nicht den oder die richtigen Befehle.
      Wenn jemand in meinem Script die nötige Hilfe geben kann, oder die Ansatzpunkte definieren kann wäre mir sehr geholfen. Danke

      1. Hi,

        Dass ich hier nicht den richtigen Ansatz finde, d. h. dass ich nicht weiß wie ich gleichzeitig auf den opener zurückkomme und das Formular mit versenden kann.

        Momentan weißt du den Browser nur an, im opener eine neue Adresse zu öffnen - den normalen Formular-Absende-Mechanismus umgehst du dabei.
        Wenn du nur GET-Parameter übergeben willst, dann kannst du diesen Weg noch nehmen, indem du die Inhalte der Formularelemente mit JavaScript ausliest und in die Adresse einbaust. Das geht aber spätestens beim Dateiupload nicht mehr.

        Vermutlich der einfachere Weg wäre, wenn du dem opener explizit einen Namen gibst (window.name), und dann über das target-Attribut im Form-Element angibst, dass die Daten dorthin geschickt werden sollen.
        Das Schliessen des Popupfensters wird dann aber wieder etwas problematisch - aus dem Popup heraus direkt nach dem Absenden des Formulars könnte zeitlich kritisch werden und die korrekte Übermittlung der Daten verhindern; erst aus dem opener heraus, wenn dessen Dokument als Antwort auf die Formularverarbeitung neu geladen ist, dürfte dir dann aber die Referenz auf das Popup fehlen. Da könnte dann helfen, das Popup noch mal neu mit dem gleichen Fensternamen zu öffnen und dann wieder zu schliessen. Ob das gelingt, hängt aber davon ab, wie der Popupblocker eingestellt ist (siehe auch hier ff.).

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        1. Hi,

          Dass ich hier nicht den richtigen Ansatz finde, d. h. dass ich nicht weiß wie ich gleichzeitig auf den opener zurückkomme und das Formular mit versenden kann.

          Momentan weißt du den Browser nur an, im opener eine neue Adresse zu öffnen - den normalen Formular-Absende-Mechanismus umgehst du dabei.
          Wenn du nur GET-Parameter übergeben willst, dann kannst du diesen Weg noch nehmen, indem du die Inhalte der Formularelemente mit JavaScript ausliest und in die Adresse einbaust. Das geht aber spätestens beim Dateiupload nicht mehr.

          Vermutlich der einfachere Weg wäre, wenn du dem opener explizit einen Namen gibst (window.name), und dann über das target-Attribut im Form-Element angibst, dass die Daten dorthin geschickt werden sollen.
          Das Schliessen des Popupfensters wird dann aber wieder etwas problematisch - aus dem Popup heraus direkt nach dem Absenden des Formulars könnte zeitlich kritisch werden und die korrekte Übermittlung der Daten verhindern; erst aus dem opener heraus, wenn dessen Dokument als Antwort auf die Formularverarbeitung neu geladen ist, dürfte dir dann aber die Referenz auf das Popup fehlen. Da könnte dann helfen, das Popup noch mal neu mit dem gleichen Fensternamen zu öffnen und dann wieder zu schliessen. Ob das gelingt, hängt aber davon ab, wie der Popupblocker eingestellt ist (siehe auch hier ff.).

          MfG ChrisB

          Hallo und danke an alle die mir weitergeholfen haben.
          Da sich das ganze etwas schwieriger erweisst als gedacht habe ich mir eine andere Strategie überlegt und versuche die jetzt mal durchzuspielen.
          DANKE nochmals an alle
          Gruß
          Buggy

  2. Ich öffne von meinem Hauptfenster aus ein kleines Fenster in dem ich eine Datei aussuchen möchte (zum uploaden) und ein Textfeld bereitstelle. Diese Daten möchte ich dann beim abschicken mit dem Formular an eine neue URL versenden welche im opener Fenster geöffnet werden soll.

    Das geht meines Wissens nicht.

    Einzige Idee: window.name des openers auf bspw. »foo« setzen, dann <form target="foo"> setzen. Habe ich aber nicht ausprobiert.

    Du kannst höchstens das Formular im Popup absenden und auf der vom Server zurückgelieferten Ergebnisseite im Ausgangsfenster eine neue Seite öffnen und das Popup schließen.

    opener.location.href = '...';  
    close();
    

    Mathias

    1. Einzige Idee: window.name des openers auf bspw. »foo« setzen, dann <form target="foo"> setzen. Habe ich aber nicht ausprobiert.

      Oder mal target="_parent" und target="_top" ausprobieren.

      Mathias