Bonjour,
J'ai un liste déroulante avec plusieurs valeur et lorsque je choisis une valeur précise, le deuxième select se rempli avec la valeur choisie.
En fonction du choix de la valeur d'un select, un deuxième select se rempli.
J'ai trouvé un exemple sur internet mais impossible de le faire fonctionner ... http://ismekteb.blogspot.fr/2012/10/...uete-ajax.html
Lorsque je sélectionne une valeur du premier select l'autre select se rempli bien mais avec toutes les informations se trouvant sur ma vue (code html, balise,code jquery etc... inclus )
C'est le controller qui me pose problème et le data: $(this).val(), de ma fonction jQuery car je ne sais pas trop à quoi correspond à quoi .
Au niveau de mon controller :
Dans ma vue twig au niveau de Jquery comme le controller est faussé , jquery ne fonctionne pas trop bien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 public function ajaxAction() { public function ajaxAction() { $request = $this->container->get('request'); if ($this->container->get('request')->isXmlHttpRequest()) { //code à ajouter pour récupérer la valeur du sélect //boucle pour remplir la list déroulante avec le résultat foreach ($variable as $variables) { } } } //Instancier une "réponse" grâce à l'objet "Response" $response = new Response(json_encode()); //Lui indiquer le type de format dans le quelle est envoyé la réponse $response->headers->set('Content-Type', 'application/json'); //Retourner la tout à notre liste déroulante return $response; }
Le fait d'ajouter dans la partie Jquery la valeur de data : à $(this).val() me renvoi tout le contenu de la vue dans le deuxième select. Apriori le reste fonctionne car le deuxième select est rempli même si ce n'est pas la bonne information.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 <form action="" method="post" {{ form_enctype(form) }}> {{ form_widget(form.cheveux, { 'attr': {'class': 'class_image'} }) }} {{ form_widget(form.image, { 'attr': {'class': 'class_remplir'} }) }} $(".class_image").change(function() { ............................. $.ajax({ //On lui indique le type d'envoie des informations type: 'POST', //On lui indique le chemin de la fonction, ici la route vers la fonction ajaxAction() de mon controller url: '{{ path('select_ajax') }}', data: $(this).val(), //variable à changer pour éviter de récupérer tout le code de ma vue //Enfin nous lui disons de remplir notre formulaire avec le resultat success: function(response) { //Code fonctionne puisse je select est rempli $('.class_remplir').find("option").remove(); $.each(response, function(i, item) { $('.class_remplir').append(new Option(item, i)); }); } }
Quelqu'un peut il me guider sur ce que je dois mettre au niveau du controller car ajax et moi cela fais deux et je n'ai pas compris les exemples sur internet......
Merci
Partager