Caractères étranges dans le résultat d'une requête AJAX
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:
Code:
<li>Cuisine<\/li>"</li>
là où je précise, je m'attends à recevoir: 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").
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:
Code:
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)));
} |
Le JQuery:
Code:
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);
} |
EDIT:
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 ! :roll:
Merci beaucoup je suis un peu perdu dans ma conception !!