Bonsoir,
J'effectue une requête AJAX mais j'obtiens, en renvoyant la réponse en json puis en l'intégrant en JQuery, des caractères étranges comme des "" et autres, voici un copié/collé du code HTML sortit par firebug:
là où je précise, je m'attends à recevoir:
Code : Sélectionner tout - Visualiser dans une fenêtre à part <li>Cuisine<\/li>"</li>
Si je fais un echo du résultat à renvoyer, dans mon controller (voir le echo commenté juste avant le retour de ma Response), alors j'obtiens un résultat en double, mais dont l'un est "propre" (celui provoqué par le "echo").
Code : Sélectionner tout - Visualiser dans une fenêtre à part <li>Cuisine</li>
Aussi, j'attends vivement vos critiques sur la conception de ma requête (car je trouve ma manière de faire très sale: appel du controleur => appelle des 3 entités => foreaech sur chacune d'elles et un gros echo finale... Moyen non ??)
Voici le code:
Le controller:
Le JQuery:
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 public function rechercherAction() { $request = $this->get('request'); if ($request->isXmlHttpRequest()) { $keyword = $request->request->get('keyword'); $em = $this->get('doctrine')->getEntityManager(); $rayons = $em->getRepository('SiteMainBundle:Rayon')->getSearchResult($keyword); $categories = $em->getRepository('SiteMainBundle:Categorie')->getSearchResult($keyword); $produits = $em->getRepository('SiteMainBundle:Produit')->getSearchResult($keyword); $outpout = null; foreach ($rayons as $rayon) { $outpout .= '<li>' . $rayon->getNom() . '</li>'; } foreach ($categories as $categorie) { $outpout .= '<li>' . $categorie->getNom() . '</li>'; } foreach ($produits as $produit) { $outpout .= '<li>' . $produit->getNom() . '</li>'; } //echo $outpout; } return (new Response(json_encode($outpout))); }
EDIT:
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 function getSearchSugests(keyword) { if (keyword.length > 1 && keyword.length < 30) { var DATA = "keyword="+keyword; var URL = $('#search_bar').attr('href'); $.ajax ({ type: "POST", url: URL, data: DATA, success: function(res) { $('#sugestResults').html(res); } }); } return (false); }
Je n'ai plus de problème en ayant enlevé 'json_encode()' dans ma Response,
J'aurais préféré construire ma réponse dans un fichier twig, pour ainsi par exemple utiliser la fonction path(), mais je ne vois pas comment faire.
Ma div de suggestions (dans laquelle je vais afficher mes résultats) se trouvant dans mon fichier de layout (lui même étant à l'origine de l'appel de la requête AJAX), je ne peux quand même pas l'appeler en réponse de mon controleur...?
Quelle méthode adopter ?
A la relecture je vois que j'ai écris pas mal de choses, si ce n'est pas clair n'hésitez pas à me demander de synthétiser ce post !
Merci beaucoup je suis un peu perdu dans ma conception !!
Partager