Kein Zugriff auf mit Ajax nachgeladene Formularfelder

hansgeorg

New member
Es ist zum Haare raufen. Seit Stunden suche ich nach einen Fehler. Ich lade mit Ajax innerhalb eines HTML-Formulares verschiedene weitere DropDown-Menüs hinzu. Der Request wird durchgeführt. Der ResponseText im entsprechenden DIV-Container sichtbar.

Doch leider kann ich nach dem Abschicken des Formulares nicht auf die "Ajax"-Variablen dieser zusätzlichen Felder zugreifen. Sie sind nicht vorhanden. var_dump('_POST') zeigt sie mir nicht mit.

Wie kann ich auf diese Variablen zugreifen?


Hier noch ein Auszug des Ajax-Request:

HTML:
if (xmlHttp) {
    				   var url = "orders_ajax_attribute.php";
    				   var params = "ProductID="+ProductID;
    				   xmlHttp.open("POST", url, true);
    
    				   //Headerinformationen für den POST Request
    				   xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

    				   xmlHttp.setRequestHeader("Content-length", params.length);
    				   xmlHttp.setRequestHeader("Connection", "close");					
    				   xmlHttp.onreadystatechange = function () {                                  
   					    if (xmlHttp.readyState == 4) {
    						   // Zurückgeliefertes Ergebnis wird in den DIV "ergebnis" geschrieben
    						   document.getElementById("ajax_products_attributes").innerHTML = xmlHttp.responseText;
    					   }
    				   };				
    				   xmlHttp.send(params);
    			   } 
        		} else {
               //Div-Objekt mit den Ergebnissen sichtbar machen
               document.getElementById("ajax_products_attributes").style.visibility = "hidden";
}
 
Zuletzt bearbeitet von einem Moderator:
Wir reden jetzt von dem serverseitigem Zugriff, also in der orders_ajax_attribute.php oder?

Wenn ja, könnte dir $_POST["ProductID"] weiterhelfen.
 
Nein, gemeint ist der String (HTML-Code) den der Request über xmlHttp.responseText zurück gibt.

Dort werden folgende Zusatzfelder zurück gegeben:

HTML:
<select size="1" name="artikel_attributes[Schuhgröße]">
<option value="36***+***0.0000">36</option>
<option value="37***+***0.0000">37</option>
<option value="38***+***0.0000">38</option>
<option value="39***+***0.0000">39</option>
<option value="40***+***0.0000">40</option>
<option value="41***+***0.0000">41</option>
<option value="42***+***0.0000">42</option>
<option value="43***+***0.0000">43</option>
<option value="44***+***0.0000">44</option>
<option value="45***+***0.0000">45</option>
<option value="46***+***0.0000">46</option>
<option value="47***+***0.0000">47</option>
<option value="48***+***0.0000">48</option>
</select>
<select size="1" name="artikel_attributes[Schuhsohle]">
<option value="Filzsohle***+***0.0000">Filzsohle</option>
<option value="Gummisohle***+***0.0000">Gummisohle</option>
</select>

In der Seite werden diese DropDown-Menüs nach dem Request sichtbar. Nach dem Absenden des dazugehörenden Formular kann ich die Auswahl nicht mit PHP auf das Array artikel_attributes[] zugreifen. Es existiert einfach nicht. Warum nur? Ich komme hier einfach nicht weiter. Muss dieses Array irgendwie noch global gesetzt werden oder sollte das über Ajax automatisch mit der Fall sein?
 
Zuletzt bearbeitet von einem Moderator:
OK.

$_POST["artikel_attributes[Schuhgröße]"] gibt nichts zurück?

Ansonsten würde ich dich bitten, mal noch deinen PHP-Code zu posten. Da scheint irgendwas falsch zu laufen.

BTW: Es ist nicht nötig das Name-Attribut so umständlich zu benamen. Du bekommst in deinen zwei Select-Felder sowieso kein Array zurück, da du kein multivalue hast. Du bekommst einen normalen String zurück, jenachdem was du ausgewählt hast.
 
@rico das Feld heißt im PHP wenn dann anders: $_POST["artikel_attributes"]["Schuhgröße"].
Das Array sollte da schon aufgebaut werden. Du hast da dann zwei Einträge: "Schuhgröße" und "Schuhsole". Solche Arrayaufbauten kann man auch elementübergreifend (und nicht nur bei Checkboxen oder multiselect <select>s) erzeugen und können extrem nützlich sein.

@hansgeorg: Hast du mal einen Testlink, wo wir uns das ansehen können? Ich habe den Verdacht, dass da etwas in der HTML-Strkutur den Fehler verursacht.
Auch könnte das "ö" und das "ß" im Namen Probleme bereiten, wenn du nicht überall die gleiche Zeichencodierung verwendest.
 
Zurück
Oben