Ich versuche, eine HTML-Auswahlliste von Optionen zu aktualisieren, entsprechend einer Auswahl auf einem früheren HTML-Objekt zu wählen. Meine Frage ist unten. Dies wird korrekt aufgerufen.Liste von <select> optionen mit jquery und ajax
var brandName = $("#Brand").val();
$.get("updateTypes.php?q="+brandName, function(data) {
$("#Type").remove();
var typeData = JSON.parse(data);
for (loop=0; loop < typeData.length; ++loop) {
$("#Type").options.add(new Option(typeData[loop]));
}
});
Als ich ein Singleton bin mit mit meiner MySQL-Datenbank zu verbinden, ruft diese jQuery-Funktion ein 'go-between' .php Datei namens updateTypes.php, die unten:
include 'databaseInterface.php';
$brand = $_GET["q"];
$typesData = databaseInterface::getBrandTypes($brand);
return $typesData;
Diese Anrufe die getBrandTypes Funktion in meinem Singleton unter:
$query = "SELECT psTypeName FROM types WHERE brands_psBrandName='$BrandName'";
$result = mysqli_query($con, $query) or die ("Couldn't execute query. ".mysqli_error($con));
$resultArray = array();
while ($row = mysqli_fetch_assoc($result)) {
extract($row);
$resultArray[] = $psTypeName;
}
return json_encode($resultArray);
die Webseite entfernt richtig die bestehenden Optionen aus der jQuery-Funktion aber nicht, sie zu aktualisieren. Es scheint falsch zu gehen, wenn ich die JSON-Daten in der jQuery dekodiere. Warum läuft es falsch? Ist die Schleife zum Aktualisieren des Auswahlobjekts geeignet?
Diese Antwort ist groß, aber wie gesagt verwenden wollten von einer anderen Antwort, die Anweisung '$ (" # Type "). remove();' wird das ausgewählte Objekt entfernen. Der richtige Weg ist $ '(" # Type ") .html ('');'. Es fehlen auch Interpunktionszeichen im Code der Antwort. Ich habe es repariert. –