Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
je suis débutante en Zend.
je récupère coté javascript une info puis je la donne en paramètre à la fonction .$.ajax() qui ensuite coté php récupère des données en base de donnée. Et là je n'arrive pas à récupérer les données renvoyées par php pour remplir les champs textes (nom et prénom) du formulaire
Comment faire s'il vous plait ?
mon code est celui là:
public function init() [lang=php] { $ajaxContext = $this->_helper->getHelper('AjaxContext'); $ajaxContext->addActionContext('index', 'html') ->addActionContext('retrieveData', array('html', 'json')) ->initContext(); if ($this->_request->isXmlHttpRequest()) { $this->_helper->layout->disableLayout(); } } public function retrieveDataAction() { $form = new Application_Form_User($id); $tableau = array(); $tableau["nom"] = $form->_getParam("nom"); $tableau["prenom"] = $form->_getParam("prenom"); echo $tableau; }
#####################################################
[lang=javascript] function submitForm() { alert("coucou"); $.ajax( { url: 'index/retrieve-data', type: "POST", data: { "id" :$("#id").value(), }, error: errorAjax, success: function(data) { $("#prenom").val()=data['prenom']; //inserer les données mais cela ne marche pas $("#nom").val()=data['nom']; } }); }
Hors ligne
Salut,
Première erreur que je vois dans ta fonction retrieveDataAction : tu envois une donnée en POST en Ajax (ta valeur id), sauf que tu ne la récupères pas correctement dans la fonction :
$id = $this->_request->getPost('id'); $form = new Application_Form_User($id);
Deuxièmement, pour que le système fonctionne il est précisé dans la doc' qu'il faut que tu ajoutes un paramètre "format". Du coup dans ton code JavaScript :
data: { "id" :$("#id").value(), "format": "json" },
Il doit y avoir d'autres erreurs mais il se fait tard ...
Hors ligne
merci mais il y a toujours des erreurs
Hors ligne
Ce serait bien d'indiquer les erreurs, cela permettra de t'aider plus efficacement.
Néanmoins je vois déjà un problème de retour d'ajax. echo ne sait pas traiter les tableaux, donc déja echo $tableau n'affichera que Array !
Il faut pour cela renvoyer les données en json. Tu dois donc modifier ton appel javascript, pour préciser que les données sont en json, en rajoutant l'option dataType : "json":
[lang=javascript] function submitForm() { alert("coucou"); $.ajax( { url: 'index/retrieve-data', type: "POST", dataType: "json", data: { "id" :$("#id").value(), }, error: errorAjax, success: function(data) { $("#prenom").val()=data['prenom']; //inserer les données mais cela ne marche pas $("#nom").val()=data['nom']; } }); }
Ensuite en php il faut envoyer tes données en json, pour cela tu peux utiliser l'aide d'action json
[lang=php] public function retrieveDataAction() { $form = new Application_Form_User($id); $tableau = array(); $tableau["nom"] = $form->_getParam("nom"); $tableau["prenom"] = $form->_getParam("prenom"); return $this->_helper->json($tableau); }
Hors ligne
Merci
l'erreur est que dans data['prenom'] et data['nom'] je n'ai pas les valeurs récupérées coté php et data contient le code html de toute la page web de mon formulaire.
Dernière modification par Lucie U_U (05-01-2012 14:15:25)
Hors ligne
Ha oui j'ai oublié d'adapter cette partie du code.
[lang=javascript] success: function(data) { $("#prenom").val()=data.prenom; $("#nom").val()=data.nom; }
Je pense que cela devrait fonctionner. Si ce n'est pas le cas, il faudrait voir exactement ce que contient data avec un console.log par exemple.
Hors ligne
Merci trop gentil
Hors ligne