Sascha: Übergabe von Variablen an Frameset - Fehler 405

Hallo Leute,
Irgendwie funzt es nicht.
Ich möchte Variablen aus einem Formular(index.htm) an den mainframe eines Framesets (frameset.htm) mit 'post' übergeben. (Das Fromular befindet sich nicht in einem Frameset).

Die Seite im meinframe kann ich nicht editieren, denn sie befindet sich auf einem anderen Server.

Bei klick auf Submit kommt Fehler 405

Hier könnt Ihr mal schauen:
http://www.metaluna.de/test/Kopievonindex.html

In der index.htm habe ich folgende funktion definiert:

<script language="JavaScript" type="text/javascript">
<!--
 function uebergabe()
  {
   js_enabled = document.formular.js_enabled.value;
   from = document.formular.from.value;
   to = document.formular.to.value;
   pax = document.formular.pax.value;
   Day = document.formular.Day.value;
   month_1 = document.formular.month_1.value;
   RetDay = document.formular.RetDay.value;
   month_2 = document.formular.month_2.value;
   tarif_klasse = document.formular.tarif_klasse.value;
   mainframe.location.href = "frameset.htm";
  }
//-->
</script>
<form method=post name=formular>
.....

--------------------------------------------------------
In  frameset. werden die Variabelen wieder aufgenommen:

<script language="JavaScript" type="text/javascript">
 <!--
  var js_enabled;
  var from;
  var to;
  var Day;
  var pax;
  var month_1;
  var RetDay;
  var month_2;
  var tarif_klasse;
 //-->
</script>

--------------------------------------------------
Das Frameset:

<frameset rows="*" cols="80,*" frameborder="NO" border="0" framespacing="0">
  <frame src="navigation.htm" name="leftFrame" scrolling="NO" noresize>
  <frameset rows="80,*" frameborder="NO" border="0" framespacing="0">
    <frame src="titel.htm" name="topFrame" scrolling="NO" noresize>
    <frame src="http://flights2.infosys.de/index.phtml/as65394" name="mainFrame">
  </frameset>
</frameset>

  1. Hallo Sascha,

    Du hast folgendes in Deinem Quelltext:

    <form method="post" name=formular>

    Da wäre es erstens hübsch, die Anführungszeichen auch um Formular zu haben, das ist aber nur Kosmetik.

    Zweitens - und da liegt das Problem: Du hast das Attribut action nicht definiert. Weiter unten aber definierst Du: <input border=0 name=submit src="images/buttons/button_infosys_fluege.gif" type=image width="123" height="16" onClick="uebergabe();"> Bei einem Klick darauf wird der Browser angewiesen, das Formular abzuschicken (vgl. http://selfhtml.teamone.de/html/formulare/formularbuttons.htm#grafische) - das tut er, und da Du keine Action angegeben hast, schickt er es an die aktuelle Datei - eine HTML-Datei, und die kann nicht mit POST aufgerufen werden. Das sagt Dir der Fehler 405.

    Lösung: Verhindere, dass der Klick deas Formular abschickt. Das geht, indem Du onClick auch noch ein return false; mitgibst, also:

    <input border="0" name="submit" src="images/buttons/button_infosys_fluege.gif" type="image" width="123" height="16" onClick="uebergabe(); return false;">

    Das sollte Dir erst mal über diese Hürde hinweghelfen.

    Grüße,

    Utz

  2. Moin!

    Irgendwie funzt es nicht.

    Scheint ja wohl so - aus gutem Grund.

    Ich möchte Variablen aus einem Formular(index.htm) an den mainframe eines Framesets (frameset.htm) mit 'post' übergeben. (Das Fromular befindet sich nicht in einem Frameset).

    Wenn du POST einsetzt, dann bedeutet dass, das das Formular mit der Methode POST an den Server gesendet wird. Dieser Request muß dort von einem serverseitigen Skript verarbeitet werden können.

    Die Seite im meinframe kann ich nicht editieren, denn sie befindet sich auf einem anderen Server.

    Das ist schlecht, wie gleich noch zu sehen sein wird.

    Bei klick auf Submit kommt Fehler 405

    ... der, wenn ich mich recht erinnere "Method not allowed" bedeutet: POST ist nicht erlaubt, weil eine .html-Datei mit POST-Daten nichts anfangen kann.

    In der index.htm habe ich folgende funktion definiert:

    <script language="JavaScript" type="text/javascript">
    <!--
     function uebergabe()
      {
       js_enabled = document.formular.js_enabled.value;
       from = document.formular.from.value;
       to = document.formular.to.value;
       pax = document.formular.pax.value;
       Day = document.formular.Day.value;
       month_1 = document.formular.month_1.value;
       RetDay = document.formular.RetDay.value;
       month_2 = document.formular.month_2.value;
       tarif_klasse = document.formular.tarif_klasse.value;
       mainframe.location.href = "frameset.htm";
      }
    //-->
    </script>

    Hier definierst du diverse Variablen in der Funktion, die nach dem Ende der Funktion alle wieder verloren gehen, weil sie nicht als global definiert sind. Außerdem gehen sie vermutlich aus deswegen verloren, weil du eine neue Seite aufrufst. Wenn diese neue Seite deine aktuelle Seite ersetzt, ist es jedenfalls so. Ich würde vermuten, dass es so ist.

    <form method=post name=formular>

    ERROR: Required attribute "action" is missing.

    Ja, du mußt eine action angeben, das ist die URL, an die das Formular gesendet werden soll.

    In  frameset. werden die Variabelen wieder aufgenommen:

    <script language="JavaScript" type="text/javascript">
     <!--
      var js_enabled;
      var from;
      var to;
      var Day;
      var pax;
      var month_1;
      var RetDay;
      var month_2;
      var tarif_klasse;
     //-->
    </script>

    Hier definierst du eine Reihe von Variablen als global und belegst sie mit "nichts".

    Dein Problem beweist, dass du von der Verwendung von Formularen noch keine wirkliche Ahnung hast. Wenn du mal mit einfachen Worten schildern könntest, was du vorhast, und was dein Server so kann (PHP, Perl, andere Sprachen, oder gar nichts davon), dann kann man dir vielleicht weiterhelfen.

    - Sven Rautenberg