Bonjour,
Après plusieurs jours de débogage sans résultats, j’espère trouver les solutions à mon problème sur ce forum.
Contexte : J'ai souhaité développer une requête Ajax simple d'auto-complétion.
Pour cela je possède dans un fichier main.js
Dans un fichier adminController.php, une fonction :
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 function autocomplet() { var keyword = $('#input_searchNom').val(); $.ajax({ url: Routing.generate('autocomplete', { "keyword": keyword}), type: 'POST', success: function(data) { $('#search_list_id').show(); $('#search_list_id').html(data); console.log(data); }, error: function (xhr, ajaxOptions, thrownError) { console.log(xhr.status); console.log(thrownError); } }); }
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 function requette_ajaxAction($keyword){ $em = $this->getDoctrine()->getManager(); $repository = $em->getRepository('GesceBundle:Researcher'); $query = $repository->createQueryBuilder('p') ->where('p.nom LIKE :word') ->setParameter('word', '%'.$keyword.'%') ->getQuery(); $researchers = $query->getResult(); if($researchers){ die($researchers); } else{ die("Erreur lors de la requêtte ! ^^"); } }
Lorsque l'utilisateur entre une lettre dans l'input #input_searchNom, une requête Ajax s'éffectue, à ce moment une liste déroulante doit s'afficher avec la liste des champs correspondant aux résultats de la requette. Cependant je n'arrive pas à faire passer la liste de nom. J'obtien à l'affichage dans la console et dans la vue : "Array"
Si je remplace $researchers par $researchers[0] j'obtiens : "Journal".
J'ai donc des données inexploitables ... Je voudrais au moins pouvoir récupérer une liste de nom comme il est prévu, après je m'occuperai de l'affichage.
Merci d’avance.
Partager