root: Formular absenden und Ergebnis im neuen Fenster anzeigen

Hallo!

Ich möchte ein CGI ansprechen. Soweit kein Problem. Nun möchte ich aber, dass das was das CGI zurückgibt in einem neuen Fenster angezeigt wird. Eigentlich auch kein Problem. Nur leider müssen auch alle form[0].element[alle].value übergeben werden.

Ich habe mal sowas probiert:
function browservorschau(){
 window.document.forms[0].mode.value =  "n_browservorschau";
 var breite = screen.width;
 var hoehe = screen.height;
 var xsize = 500;
 var ysize = screen.height/3*2;
 var seite = window.document.forms[0].submit();
 fenster = window.open(seite, "browservorschau", "toolbar=yes,location=no,directories=no,status=yes,menubar=yes,scrollbars=auto,resizable=yes,copyhistory=no,width="+xsize+",height="+ysize);
 var xpos = (breite-xsize)/2;
 var ypos = 50;
 fenster.moveTo(xpos,ypos);
 setTimeout('fenster.focus();',200);
}

Soll ja keiner sagen ich hätte es nicht versucht...

Eine möglichkeit wäre natürlich das CGI über GET anzuspechen und alle die URL über die beiden Arrays form[0].element[zähler].value und form[0].element[zähler].key zusammenzubauen.

Gehts auch einfacher???

PS: "form[0].element[x].key" ist sicher nicht richtig! Wie komme ich an den Namen des Feldes?

  1. Hallo,

    wenn du von formular daten absenden sprichst, dann verwende auch
    einen <form> tag in welchem  du <form target="_blank"> angeben kannst.

    gruss

    --
    no strict;
    no warnings;
    Über eine Rückmeldung freut sich später jeder, der das gleiche Problem hat und im Archiv nach einer Lösung sucht.
    1. Ich habe verschiedene Möglichkeiten das CGI anzusprechen. Alle bis auf diese eine sollen im gleichen Fenster laufen.

      Nur die Browservorschau eben nicht...

      var seite = "orangenews.cgi?betreff="+window.document.form[0].betreff.value+"&nachricht="+window.document.form[0].nachricht.value;
       fenster = window.open(seite, "browservorschau", "toolbar=yes,location=no,directories=no,status=yes,menubar=yes,scrollbars=auto,resizable=yes,copyhistory=no,width="+xsize+",height="+ysize);

      Sowas müsste doch gehen???

      1. Gude,

        haste mal folgendes probiert?

        <script>
        function bla(){
        window.open("about:blank","Fenster1","width=310,height=400,left=0,top=0");
        }
        </script>

        <form method="post" action="index.html" onsubmit="bla()" target="Fenster1">
        <input type="text" name="blub">
        <input type="submit" target="Fenster1"  name="submit" >
        </form>

        gruss

        --
        no strict;
        no warnings;
        Über eine Rückmeldung freut sich später jeder, der das gleiche Problem hat und im Archiv nach einer Lösung sucht.
        1. Ahhh, auch ein Hesse! Guuude! :-)

          Mit deinem Vorschlag macht er doch auf jeden Fall Fenster1 auf, auch wenn ich das CGI ganz normal bei den anderen Optionen über HTML-Submittbutton anspreche. Das onsubmit wird doch dann auch angesprochen? Das event ist doch erfüllt?!

          Ich glaube der Weg mit der zusammengebauten URL ist schon ganz gut. Nur leider mach das hier gerade gar nichts und ich bin nicht so ein JS-Brain um nicht zu sagen ich bin ein Newbee...

          Da:
          function browservorschau(){
           window.document.forms[0].mode.value =  "n_browservorschau";
           var breite = screen.width;
           var hoehe = screen.height;
           var xsize = 500;
           var ysize = screen.height/3*2;

          var seite = "orangenews.cgi?betreff="+window.document.form[0].betreff.value+"&nachricht="+window.document.form[0].nachricht.value; // da muss halt noch mehr dran...
           fenster = window.open(seite, "browservorschau", "toolbar=yes,location=no,directories=no,status=yes,menubar=yes,scrollbars=auto,resizable=yes,copyhistory=no,width="+xsize+",height="+ysize);
           var xpos = (breite-xsize)/2;
           var ypos = 50;
           fenster.moveTo(xpos,ypos);
           setTimeout('fenster.focus();',200);
          }

          Müsste er so nicht die URL in der Variable seite im neuen Fenster aufbauen???

          1. Hi root,

            var seite = "orangenews.cgi?betreff="+window.document.form[0].betreff.value+"&nachricht="+window.document.form[0].nachricht.value; // da muss halt noch mehr dran...

            nur zur Sicherheit:
            var seite="orangenews.cgi?betreff="+window.document.forms[0].betreff.value+"&nachricht="+window.document.forms[0].nachricht.value;

            Da fehlte jeweils ein "s".

            Und noch eine Frage: Gibt es bei Deinem Proble, einen Unterschied zwischen dem Abschicken des Formulars und der Vorschau? Oder ist die Vorschau eine Zwischenstation vor dem Abschicken?

            Grüße,
            bluntburn

            --
            jeden Tag 'ne Currywurst...
            1. Es geht um einen Newsletter. Es sind HTML-Eingaben erlaubt. Ich kann meine Eingaben und Auswahlen speichern, danach wird die gleiche Ansicht im gleichen Fenster wieder aufgebaut. Du kannst den Newsletter auch einfach abschicken. Dann bekommst DU eine Bestätigungsseite. bla bla...
              Dann kannst Du halt um deine HTML-Eingaben zu checken den Body des Newsletter im Browser anzeigen. Dass soll natürlich im neuen Fenster passieren. Sonst ist ja meine Eingabeseite weg.

              Und BINGO!!!!

              So klappts:
              function browservorschau(){
               window.document.forms[0].mode.value =  "n_browservorschau";
               var breite = screen.width;
               var hoehe = screen.height;
               var xsize = 500;
               var ysize = screen.height/3*2;

              var seite = "orangenews.cgi?betreff="+window.document.forms[0].betreff.value+"&nachricht="+window.document.forms[0].nachricht.value+"&session_id="+window.document.forms[0].session_id.value+"&mode=n_browservorschau"; // da muss halt noch mehr dran...
               fenster = window.open(seite, "browservorschau", "toolbar=yes,location=no,directories=no,status=yes,menubar=yes,scrollbars=auto,resizable=yes,copyhistory=no,width="+xsize+",height="+ysize);
               var xpos = (breite-xsize)/2;
               var ypos = 50;
               fenster.moveTo(xpos,ypos);
               setTimeout('fenster.focus();',200);
              }

              Viiiiiiiiiehlen Dank!

              ------------------------------------------------------------------
              Ich schwöre auf die Currywurst vom "Kieler Eck" - Berlin, Steglitz, Schloßstrasse :-)

              1. Ich schwöre auf die Currywurst vom "Kieler Eck" - Berlin, Steglitz, Schloßstrasse :-)

                und ich auf die, vom Berliner Imbiss in Düsseldorf-Kaiserswerth!

                Schönes Wochenende!

                --
                jeden Tag 'ne Currywurst...
                1. und ich auf die, vom Berliner Imbiss in Düsseldorf-Kaiserswerth!

                  Die checke ich beim nächsten Berlinbesuch mal aus!!!

                  1. Mist Problem!!!
                    Das ist doch mal wieder alles Mist!!!

                    Wenn ich nun einen "längeren" Text eingebe, dann hackt er mir den mit GET ab. Oder es liegt daran, dass ich HTML-Code in der per GET aufgerufenen URL habe...

                    nun?

                    Andere Idee. Kann ich nicht über JS das target im form-tag schalten?

                    1. Es liegt an dem Code! Da sind zu viele " drin, das zerreißt alles! Bei einem normalen submit würde das umgewandelt werden.

              2. Na also ;-)

                Viiiiiiiiiehlen Dank!

                nix zu danken, hast es ja selber gemacht,

                mir sin hesse, war wir ******* müsst ihr fresse ;-)

                gruss

                --
                no strict;
                no warnings;
                Über eine Rückmeldung freut sich später jeder, der das gleiche Problem hat und im Archiv nach einer Lösung sucht.
          2. Mit deinem Vorschlag macht er doch auf jeden Fall Fenster1 auf, auch wenn ich das CGI ganz normal bei den anderen Optionen über HTML-Submittbutton anspreche. Das onsubmit wird doch dann auch angesprochen? Das event ist doch erfüllt?!

            Du kannst doch einfach in diesem Falle als target ein neues Fenster angeben. Da würde dann wenigstens ohne JS nicht die Funktion verlieren.

            <input type="submit" value="vorschau" onclick="setVor(this.form);">

            function setVor(f)
            {
            var win = window.open('#', 'vorschau').focus();
            f.target = 'vorschau';
            }

            Struppi.