Remplir une boîte de sélection à l'aide de JQUERY, AJAX et PHP
J'ai posté une question plus tôt et ne pas avoir beaucoup de chance, j'espère pour effacer le contenu d'une deuxième liste déroulante et de repeupler la liste déroulante, selon la valeur qui est dans la première liste déroulante.
J'ai le texte suivant, sélectionnez les cases comme ci-dessous:
<select name = "car" id="Cars" onchange="myFunction(this)">
<option value="0">Toyota</option>
<option value="1">Audi</option>
<option value="2">Suzuki</option>
</select>
En dessous de cette liste déroulante j'ai aussi un autre menu déroulant pour les modèles:
<select id="emptyDropdown">
<option value="0">R8</option>
<option value="1">Quattro</option>
<option value="2">A6 hatchback</option>
</select>
onchange je veux effacer la deuxième liste déroulante et de le remplir avec des modèles relatifs à la marque de la voiture. Par exemple.
Audi - A8, A6, A4 etc.
Suzuki - Swift, Panda etc.
<script>
function myFunction(obj)
{
$('#emptyDropdown').empty()
var dropDown = document.getElementById("carId");
var carId = dropDown.options[dropDown.selectedIndex].value;
$.ajax({
type: "POST",
url: "/project/main/getcars",
data: { 'carId': carId },
success: function(msg){
?????????
}
});
}
</script>
Je alors la suite de fonctions PHP comme on le voit ci-dessous(j'utilise codeigniter) - cette fonction utilise la Voiture ID et renvoie une liste de tous les modèles, comme ci-dessous:
public function getCars(){
$this->load->model('car_model');
$this->form_validation->set_rules('carId', 'carId', 'trim|xss_clean');
if($this->form_validation->run()){
$carId = $this->input->post('carId');
$carModels = $this->user_management_model->getCarModels($carId);
} else {
echo "error";
}
}
Ensuite, je ne sais pas comment faire pour retourner chaque élément de la matrice produite en PHP, pour repeupler la liste déroulante avec ID = "emptyDropdown".Le tableau généré en PHP a la structure suivante:
Array ( [0] => Array ( [ModelName] => R8 V6 Twin Turbo [ModelID] => 19 ) [1] => Array ( [ModelName] => A6 Hatchback [ModelID] => 107 ) )
De clarifier la question - comment devrais-je prendre chaque élément du tableau et de mettre ce que une nouvelle option dans la liste déroulante? est-il possible de retourner un tableau de javascript et ensuite repeupler dans le succès méthode de l'appel ajax?
Toute aide serait grandement appréciée, merci d'avance
source d'informationauteur TotalNewbie
Vous devez vous connecter pour publier un commentaire.
Cette réponse fournit les modifications nécessaires à votre code.
AVERTISSEMENT: Sans voir l'exacte installer, d'être au courant, il peut y avoir une variété de facteurs qui sont à l'origine de ce pas travailler "comme tel" dans votre installation. Je ne sais pas comment vos itinéraires sont mis en place, ou si vous êtes à l'aide de Firebug ou une autre console pour regarder les appels ajax, mais ce devrait vous donner les blocs de construction:
D'abord, changer votre php pour sortie le tableau json-chaîne codée:
Ensuite, modifiez votre script ajax appel pour avoir un succès rappel qui reçoit les données et l'ajoute à votre liste déroulante:
Encore une fois - ce sont les blocs de construction. Utilisez votre navigateur de la console ou d'un outil comme Firebug pour regarder la requête AJAX, et le retour des données, de sorte que vous pouvez modifier selon le cas. Bonne chance!