Bonjour à tous,
Je ne sais pas si le titre est bien clair. Je vais essayer d'exposer les choses pas à pas.
Je souhaite, à l'aide d'Ajax, afficher dynamiquement un template twig généré par mon contrôleur dans une div particulière de ma page actuelle. Jusque là, pas de problème.
Mon problème est que je souhaite, selon les cas, afficher ma réponse dans tel ou tel div.
Pour ça, j'ai utilisé un retour en json (pas spécialement par choix mais parce qu'après pas mal de recherches, c'est la direction qu'il m'a semblé falloir prendre) avec la mention dataType:'json' côté js.
Ça donnait quelque chose comme ça côté Controller :
1 2 3 4
| $response = array();
$response['status'] = 0;
$response['message'] = 'Mon message';
return new Response(json_encode($response)); |
et côté js :
1 2 3 4 5 6 7 8 9
| dataType: 'json',
success: function(data){
if (data.status == 0) {
$('#mon_div').html(data.message);
}
else if (data.status == 1) {
$('#mon_autre_div').html(data.message);
}
} |
Jusque là tout va bien. Le problème arrive lorsque j'essaie de parser non pas 'Mon message' mais un template $this->render('exempleBundle:Exemple:index.html.twig', array('ma_variable'=>$ma_valeur).
J'ai tenté pas mal de chose à commencer par
$response['message'] = $this->render('exempleBundle:Exemple:index.html.twig', array('ma_variable'=>$ma_valeur));
Puis d'autres choses en utilisant :
$response->headers->set('Content-Type', 'application/json');
ou
$response = new JsonResponse();
mais rien n'y fait.
Du coup j'en appelle à vos avis. Par ailleurs, je ne tiens pas spécialement au format json si d'autres moyens plus simples existent.
Je pose la question un peu abruptement car je me dis que la solution est peut-être très évidente, mais si vous avez besoin que je vous décrive tous mes essais avec les comportements en retour, dites-moi.
Merci par avance !
Partager