J'essaie de mettre à jour une liste de sélection d'options html en fonction d'une sélection effectuée sur un objet html select précédent. Ma jquery est ci-dessous. Ceci est appelé correctement.Mise à jour de la liste des options <select> en utilisant jquery et 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]));
}
});
Comme j'utilise un singleton pour l'interface avec ma base de données mySQL, cette fonction jquery appelle un fichier .php 'go-between' qui est appelé updateTypes.php ci-dessous:
include 'databaseInterface.php';
$brand = $_GET["q"];
$typesData = databaseInterface::getBrandTypes($brand);
return $typesData;
Ce appels la fonction getBrandTypes dans mon singleton ci-dessous:
$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);
la page Web supprime correctement les options existantes de la fonction jquery, mais ne parvient pas à les mettre à jour. Il semble aller mal quand je décode les données JSON dans la jquery. Pourquoi ça va mal? La boucle de mise à jour de l'objet select est-elle appropriée?
Cette réponse est grande, mais comme l'a dit un autre répondre, l'instruction '$ (" # Type "). remove();' va supprimer l'objet select. La bonne façon de le faire est d'utiliser '$ (" # Type "). Html ('');'. Il y a également une ponctuation manquante dans le code de la réponse. Je l'ai réparé. –