Viola Barth: Daten übertragen

Hallo,

ich habe folgendes Problem, mit dem ich mich schon eine ganze Weile beschäftige! Ich möchte Daten von einer PHP-Seite per POST an ein Popup-Fenster übergeben. Durch Anhängen der Informationen und dem Auslesen per Get funktioniert. Aber es müssen zu viele Daten übertragen werden, um Get zu nutzen.
Deshalb nutze ich jetzt "document.forms[0].target". Dieser Wert wird in einer Javascriptfunktion angepasst. Mit dem Firefox funktioniert alles einwandtfrei. Das Popup wird geöffnet und die Werte übertragen. Aber die Internetexplorer (Version: 6.0.2.800.1106CO) öffnet nicht mal das Popup. Nehme ich die ersten Beiden Zeilen weg, öffnet auch der Internetexplorer das Popup-Fenster, aber die Daten werden nicht per POST übermittelt. Was mache ich falsch?

Viola

Quellcodeausschnitt:

function setDisplayMode()
{
    document.forms[0].target = "ownChoice";
    document.forms[0].action = "runChoice.php";
    ownChoice = window.open("runChoice.php", "ownChoice", "width=690,height=500,scrollbars");
}

  1. hi,

    Deshalb nutze ich jetzt "document.forms[0].target". Dieser Wert wird in einer Javascriptfunktion angepasst.

    Wann und wo rufst du diese Funktion auf?

    Aber die Internetexplorer (Version: 6.0.2.800.1106CO) öffnet nicht mal das Popup.

    Welche Fehlermeldungen bringt er?

    Beispielseite?

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. hi,

      Deshalb nutze ich jetzt "document.forms[0].target". Dieser Wert wird in einer Javascriptfunktion angepasst.

      Wann und wo rufst du diese Funktion auf?

      Aber die Internetexplorer (Version: 6.0.2.800.1106CO) öffnet nicht mal das Popup.

      Welche Fehlermeldungen bringt er?

      Beispielseite?

      gruß,
      wahsaga

      Hi Wahsaga,

      ich rufe die Funktion immer dann auf, wenn der Radiobutton eigene Wahl ausgewählt wurde und das Formular abgeschickt wurde. Der Aufruf der Funktion setDisplayMode() befindet sich in der Funktion setTarget. In der Funktiion checkSelectedElement wird das Formularfeld ownChoice mit einem Wert gefüllt, der dann beim Absenden des Formulars geprüft wird.
      Das komische ist, der IE gibt keine Fehlermeldung aus. Er öffnet nur einfach nicht das Fenster.

      Die dazugehörige Formularaufbau sieht so aus:

      <form method="POST" action="" name="select_run" target="_self">

      <div style='margin-top: 5%'>
         <label for='run'>Testlauf:</label><br>
         <div id='radio'>

      <input type="radio" name="run" value="all" onClick="javaScript:   checkSelectedElement('run')" checked >Alle Testl&auml;ufe<br>
         <input type="radio" name="run" value="uptodate" onClick="javaScript: checkSelectedElement('run')">Aktuellster Testlauf<br>
         <input type="radio" name="run" value="ownChoice" onClick="javaScript: checkSelectedElement('run')">eigene Wahl<br>
          </div>
          </div>
      <input type="submit" name="submit_button" value="auswählen" class="send" onClick="setTarget('')">
      </form>

      function setTarget(target, skript)
      {

      if (document.forms[0].ownChoice.value == "")
        {
        }
        else
        {
           setDisplayMode();
        }

      Grüße
      Viola

  2. Hi,

    function setDisplayMode()
    {
        document.forms[0].target = "ownChoice";
        document.forms[0].action = "runChoice.php";
        ownChoice = window.open("runChoice.php", "ownChoice", "width=690,height=500,scrollbars");
    }

    Du willst doch nicht die runChoice.php im popup haben, sondern die Form an runChoice.php schicken und den _response_ in das popup laden.

    Oeffne also ein _leeres_ Fenster, warte zur Sicherheit mit einem setTimeout ein paar ms, setze target und action und sende die Form ab. Das klappt auch im IE.

    Gruesse, Joachim

    --
    Am Ende wird alles gut.
    1. Du willst doch nicht die runChoice.php im popup haben, sondern die Form an runChoice.php schicken und den _response_ in das popup laden.

      Oeffne also ein _leeres_ Fenster, warte zur Sicherheit mit einem setTimeout ein paar ms, setze target und action und sende die Form ab. Das klappt auch im IE.

      Gruesse, Joachim

      Hi Joachim,

      danke für Deine Antwort, ich habe meinen Rechner eben erst wieder eingeschaltet.
      Dein Hinweis stimmt, da hatte ich einen Denkfehler. Trotzdem funktioniert Dein Vorschlag bei mir noch nicht! Der IE öffnet jetzt das leere Fenster, aber die gewünschte Seite wird nicht geladen. Im Firefox funktioniert es weiterhin.

      Mein Code sieht jetzt so aus:

      function setDisplayMode()
      {
      document.forms[0].target = "ownChoice";
      document.forms[0].action = "runChoice.php";
      setTimeout("document.forms[0].submit()", 3);
      window.open("", "ownChoice", "width=690,height=500,scrollbars");
      }

      Stimmt die Reihenfolge eventuell nicht oder habe ich Deinen Tip nur falsch verstanden?

      Grüße
      Viola

      1. Hi,

        Stimmt die Reihenfolge eventuell nicht oder habe ich Deinen Tip nur falsch verstanden?

        Beides. Nur wenn ein Fenster bereits geoeffnet ist, kannst Du zuverlaessig ein Target setzen.
        Also:
        Oeffnen, Timeout auf submitfunktion (3 ms ist etwas wenig, nimm 100!), dort target und action setzen und submitten.

        Gruesse, Joachim

        --
        Am Ende wird alles gut.