# Wie kann ich mit document.forms.submit Parameter übergeben?



## Dani2311 (6. Mai 2009)

Hallo!
Ich würde geren von einem Script Seite1.php mit form Action ein weiteres Script  Seite2.php aufrufen. Dies möchte ich mit HIlfe von document.forms.submitform.submit machen.
Wie kann ich document.forms.submitform.submit Parameter angeben, die dann mit form Action zum anderen Script übertragen werden?


Seite1.php
           .......
            firstCat1 = document.getElementById ("idSecondCatFF");
            id_1=firstCat1.options[firstCat1.selectedIndex].value;
            firstCat2 = document.getElementById ("idSecondCatCh");
            id_2=firstCat2.options[firstCat2.selectedIndex].value;         
           document.forms.submitform.submit(id_1, id_2);
            ........
            .......
            <body>
            <form ACTION="new.php?id_1, id_2" METHOD="post" name="submitform">

Seite2.php
            .......
            $id_1= $_GET["id_1"];
            $id_1= $_GET["id_1"];
            ..........


----------



## kuddeldaddeldu (6. Mai 2009)

Hi,

was soll denn das werden? Wenn Du das Formular abschickst, werden doch die Werte aus den Feldern per POST übertragen. Warum willst Du sie jetzt durch eine Javascript-Krücke per GET übergeben?

LG


----------



## Dani2311 (6. Mai 2009)

Wie würdest du es denn dann machen?

Die Felder im Formular sehen so aus?

<select name="SecondCatFF" id="idSecondCatFF" style="width: 300px">
<option value="1">a</option>';
<option value="2">b</option>';
</select>

Ich möchte den ausgewählten value an das zweite Script übergeben.

Wie mache ich das am geschicktesten?


----------



## kuddeldaddeldu (6. Mai 2009)

Hi,



Dani2311 hat gesagt.:


> Ich möchte den ausgewählten value an das zweite Script übergeben.



das geschieht doch auch durch das Absenden des Formulars. Du findest den Wert in $_POST['SecondCatFF']. Wo ist das Problem?

LG


----------



## Dani2311 (6. Mai 2009)

Dachte ich auch, aber wenn ich im 2. Skript das ganze mit
$ff=$_POST["SecondCatFF"];
abrufe, dann ist $ff leer.

Warum?


----------



## kuddeldaddeldu (6. Mai 2009)

Hi,

dann machst Du irgendwas falsch. Zeig doch mal das ganze Formular, aber bitte in den dafür vorgesehenen Tags.

LG


----------



## Dani2311 (6. Mai 2009)

Ich hoffe, du kanst mir helfen......
Name und Description kann ich im zweiten Script lesen, aber nicht SecondCatFF.


```
<script type="text/javascript">
//........
function onoff()
{
//.....
document.forms.submitform.submit();
//........
}
</script>
</head>
  <body>
    <form ACTION="new.php" METHOD="post" name="submitform">
      <table class="layout" style="display:block" align="center" cellspacing="2" border="1">
        <tr>
          <td class="layout_header" colspan="2">
            <table border="0" cellspacing="0" cellpadding="0" class="layout_header">
              <tr>
                <td class="layout_header_logo"><img src="../pic/gd_logo.gif" border="0"></td>
     
                <td class="layout_header_right">&nbsp;</td>
              </tr>
              <tr>
                <td class="layout_menu" rowspan="2"><ul><li><strong>New</strong></li></ul></td>
                <td class="layout_content" align="center">
                  <p style="font-size:large;">Create New</p>
                  <table id="GeneralInformation" cellspacing="0" width="70%" style="display:block" bordercolor="#111111" cellpadding="0">
                    <tr>
                      <td width="40%">
                        <p style="font-size:medium"><b>General Information</b><br><br></p>
                      </td>
                    </tr>
                    <tr>
                      <td width="40%">
                      <p align="left">Name</td>
                      <td width="60">
                        <input TYPE="text" NAME="name" VALUE SIZE="73" MAXLENGTH="50" style="width: 400px" >
                      </td>
                    </tr>
                    <tr>
                      <td width="40%">
                      <p align="left">Description</td>
                      <td width="60">
                        <textarea name="description" cols="50" rows="5" style="width: 400px"></textarea>
                      </td>
                    </tr>
                    <tr>
                      <td width="40%">&nbsp;</td>
                      <td width="60%">&nbsp;</td>
                    </tr>
                  </table>

                  <table id="Components" cellspacing="0" width="70%" style="display:none" bordercolor="#111111" cellpadding="0">
                    <tr>
                      <td width="40%">
                        <p style="font-size:medium;"><b>Components</b><br><br></p>
                      </td>
                    </tr>
              <tr>
                      <td width="40%">
                      <p align="left" style="width: 250px" >FF</td>
                      <td width="60%">
                        <select name="SecondCatFF" id="idSecondCatFF" style="width: 300px">
                            <option value="1">a</option>';
                            <option value="2">b</option>';
                        </select>
                      </td>
                    </tr>
                    <tr>
                      <td width="40%">&nbsp;</td>
                      <td width="60%">&nbsp;</td>
                    </tr>
                  </table>
              <tr>
                <td class="layout_content" align="center">
                  <input type="button" id="idname" value="Next Step" onclick="onoff()">
                </td>
                <td class="layout_header_right">&nbsp;</td>
              </tr>
            </table>
          </td>
        </tr>


    </form>
  </body>
</html>
```


----------



## Sven Mintel (6. Mai 2009)

Mmmh, Ausgabe von $_POST im 2. Skript bei mir:

```
Array ( [name] => [description] => [SecondCatFF] => 1 )
```

Welchen Browser verwendest du?
Was verbirgt sich hinter dem entfernten JS-Code?


----------



## Dani2311 (6. Mai 2009)

Bei mir ist SecondCatFF leer. Ich versteh nicht warum.
Ich verwende den InternetExplorer.


----------



## kuddeldaddeldu (6. Mai 2009)

Hi,



Sven Mintel hat gesagt.:


> Was verbirgt sich hinter dem entfernten JS-Code?



Und?

LG


----------



## Dani2311 (6. Mai 2009)

In dem JS-Anteil lasse ich meine select felder mit Werten aus der Datenbank befüllen (a und b waren vorher nur Beispielwerte).
Ich habe gerade selbst nochmal getestet, mit festeingetragenen Werten wie z.B. a und b funktioniert es, mit dem JS Code nicht.


```
function sendRequest(){
            http.open("GET", "get_ff.php", true);
            http.onreadystatechange = get_all_FF;
            http.send(null);
      }

      function get_all_FF()
      {
        if (http.readyState == 4){
          inhalt = http.responseText;

          /*-----Delete old Elements---------------*/
          liste = document.getElementById("idSecondCatFF");
          liste.length = 0;

          /*-----Insert new Elements-------------------*/
          liste.options[liste.length] = new Option ("--Choose--", "-1", true, true);

          rueckgabe = eval("(" + inhalt + ")");

          for (i = 0; i < rueckgabe.length; i++) {
                var daten = rueckgabe[i];
                da = document.createElement("option");
                da.setAttribute("value",daten.id);
                var textknoten = document.createTextNode(daten.ff_name);
                da.appendChild(textknoten);
                liste.appendChild(da);
           }
```


----------



## kuddeldaddeldu (6. Mai 2009)

Hi,

warum erzeugst Du die Options in der Schleife so umständlich und nicht so, wie den "--Choose--"-Eintrag?


```
for (i = 0; i < rueckgabe.length; i++) {
   var daten = rueckgabe[i];
   liste.options[liste.length] = new Option(daten.ff_name, daten.id, false, false);
}
```

LG


----------



## Dani2311 (6. Mai 2009)

Ja, so kann ich es auch machen. Sieht natürlich viel schöner aus.
Aber das löst mein Problem leider immer noch nicht und ich versteh einfach nicht warum.


----------



## clipper (6. Mai 2009)

Für diesen Zweck gibt es das Formelement:

<input type="hidden" name="xyz" value="wird mitgesendet">

Dies ist innerhalb der Form zu plazieren und wird dem Nutzer nicht angezeigt.
Bei SUBMIT wird die Zeichenkette mitgesendet und kann dann per

if (isset($_REQUEST["xyz"])) { $xyz=$_REQUEST["xyz"]; } else { $xyz="leer"; }

abgefragt werden.

LG


----------



## Dani2311 (6. Mai 2009)

Und wie kann ich dem Value
<input type="hidden" name="xyz" value="wird mitgesendet"> den Value-Wert aus dem select-Feld zuweisen?

Wird dieser Wert dann automatisch bei "Submit" mitgesendet oder muss ich diesen noch als Parameter mit anhängen?


----------



## kuddeldaddeldu (6. Mai 2009)

Hi,



Dani2311 hat gesagt.:


> Aber das löst mein Problem leider immer noch nicht und ich versteh einfach nicht warum.



dann müsstest Du Dir mal anschauen, ob die Rückgabedaten Deines Requests auch so aussehen, wie Du es Dir vorgestellt hast. Lass Dir z.B. mal in der Schleife daten.id per alert() ausgeben.

Kann man das Problem eigentlich online bestaunen?

@clipper: Warum sollte man ein zusätzliches hidden-Feld einfügen, das man per Javascript aus einem vorhandenen Formularfeld füllen muss, wenn man auf der Empfangsseite doch einfach das Originalfeld abfragen kann. Der Fehler muss hier im Javascript liegen, das die Options füllt.

LG


----------



## Dani2311 (6. Mai 2009)

Bei


```
for (i = 0; i < rueckgabe.length; i++) {
                var daten = rueckgabe[i];
                alert ("Wert:" + daten.id);
                liste.options[liste.length] = new Option(daten.ff_name, daten.id, false, false);
          }
```

werden genau die richtigen IDs ausgegeben.

Sorry, das ganze kann man leider nicht online bestaunen.


----------



## kuddeldaddeldu (6. Mai 2009)

Hi,

und was war jetzt der fehlende Teil in der onoff()-Funktion? Stellst Du da noch irgendwas an? So kann man die Abläufe in Deiner Seite nicht erkennen. Vielleicht stellst Du das einfach mal testhalber online zur Verfügung.

LG

Nachtrag:

Folgender Test:


```
<script type="text/javascript">
function get_all_FF() {
   rueckgabe = [
             {"id": 3, "ff_name": "eintrag 1"},
             {"id": 8, "ff_name": "eintrag 2"},
             {"id": 5, "ff_name": "eintrag 3"}
         ];
   liste = document.getElementById("idSecondCatFF");
   liste.length = 0;
   liste.options[liste.length] = new Option ("--Choose--", "-1", true, true);
   for (i = 0; i < rueckgabe.length; i++) {
      var daten = rueckgabe[i];
      liste.options[liste.length] = new Option(daten.ff_name, daten.id, false, false);
   }
}
<script>
...
<body onload="get_all_FF();">
...
   <select name="SecondCatFF" id="idSecondCatFF" style="width: 300px">
       <option value="1">a</option>';
       <option value="2">b</option>';
   </select>
```

funktioniert tadellos bei mir, auch im IE.

Ausgabe von var_dump($_POST);:

```
array(3) { ["name"]=>  string(0) "" ["description"]=>  string(0) "" ["SecondCatFF"]=>  string(1) "8" }
```


----------

