Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous
Etant nouveau dans le monde de Zend et de son MVC, j'essaie d'y intégrer un peu d'AJAX
Dites-moip si je fais fausse route et si ce n'est pô la bonne méthode :
J'ai un appel en JS tout bête :
<a href="#" onClick="showInbox('inbox', 'inboxNav')">Boîte de réception</a>
Suivie de son code en JS qui récupère un xml:
xhr_object.open("GET", xmlBaseUrl+'inbox/' + mode, true); xhr_object.onreadystatechange = function() { if(xhr_object.aborted) return; if(xhr_object.readyState == 4) { if(xhr_object.status == 200) { var xml = xhr_object.responseXML;
Et l'Action du Controller :
function xmlAction() { $this->_helper->layout->disableLayout(); switch($this->getRequest()->getParam('w', false)) { case 'inbox' : $xml = new Plumillon_Xml_Response_Inbox($_SESSION['user']->id, $this->getRequest()->getParam('m', false)); break; default: die(); } $this->view->xml = $xml->render(); }
Or, je ne récupère rien dans ma variable xml du JS sauf si je me place en responseText
J'ai choisi de passer par le controller pour faire simple (sans utiliser de librairie AJAX etc)
Comment dois-je faire pour récupérer mon xml qui est pourtant bien généré ?
Merchi d'avance !
Dernière modification par Fluckysan (24-06-2008 12:01:47)
Hors ligne
a mon avis il ne renvoi rien dans ton responseXML car pour lui ce qui est renvoyé n'est pas de l'xml
Je n'ai jamais utilisé responseXML, mais il ne faut pas spécifier le format de ce que tu renvoi dans ta "page cible" ? (format xml ici )
Hors ligne
Merchi pour ta réponse Stf
C'est sans doutes la solution puisque lorsque je teste en responseText j'ai l'affichage de mon XML généré
stf a écrit:
Je n'ai jamais utilisé responseXML, mais il ne faut pas spécifier le format de ce que tu renvoi dans ta "page cible" ? (format xml ici )
Comment puis-je spécifier le format du phtml cible ?
Dernière modification par Fluckysan (19-06-2008 11:06:07)
Hors ligne
Essaye de mettre ca avant de sortir ton xml:
<?xml version="1.0" encoding="utf-8" ?>
Hors ligne
Je viens de faire un test en rajoutant ceci à ma vue :
header( 'Content-type: application/xml' );
Vi je n'avais pô précisé mais je faisais un simple echo dans ma vue (xml.phtml) :
header( 'Content-type: application/xml' ); echo $this->xml;
Il fallait bien préciser le type de document, merchi pour al piste Stf
Je ne sais pô si cette façon de faire est bien mais ça fonctionne !
Pouvez-vous me donner votre avis ?
Hors ligne
Côté vue, je sais pas si il y a quelque chose pour éviter de générer un header directement, je suis pas un expert.
Mais côté controller, ça me parait propre .
Juste un truc, j'ai pas ce qu'il faut sous la main pour vérifier mais demander le rendu de la vue est obligatoire? C'est pas automatique? A moins que ça soit obligatoire quand on désactive le layout.
Hors ligne
Tu as raison Nikkau, le rendu de la vue est automatique
Le render() que tu vois est une fonction de la class Plumillon_Xml_Response_Inbox
Merchi pour ta réponse, je me posais aussi la question de savoir s'il y avait une façon de passer le header depuis le contrôler plutôt que de le faire dans le phtml (ça serait plus propre )
Hors ligne
Autant pour moi, j'ai regarder le code trop vite, un render() en fin d'action j'ai pas trop fais gaffe .
Hors ligne
Np, as-tu des infos pour changer le header via le controller ?
Hors ligne
Salut,
Tu devrais trouver ton bonheur en regardant dans la doc les aides d'action (action helper) ContextSwitch et AjaxContext.
A+
Hors ligne
Ho merchi Blueeyes c'est ce dont j'avais besoin
Now, apprendre à s'en servir
Hors ligne