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

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.

Code:
      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);
           }
 
Hi,

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

Code:
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
 
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.
 
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
 
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?
 
Hi,

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
 
Bei

Code:
          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.
 
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:

HTML:
<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);:
Code:
array(3) { ["name"]=>  string(0) "" ["description"]=>  string(0) "" ["SecondCatFF"]=>  string(1) "8" }
 
Zuletzt bearbeitet:
Zurück