Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 04-01-2012 22:26:22

Lucie U_U
Nouveau membre
Date d'inscription: 04-01-2012
Messages: 5

Ajax et zend

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à:

Code:

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;
    }

#####################################################

Code:

[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

 

#2 05-01-2012 00:18:53

bakura
Administrateur
Date d'inscription: 30-01-2010
Messages: 353

Re: Ajax et zend

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 :

Code:

$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 :

Code:

data: {                 
                "id" :$("#id").value(),
                "format": "json"
                },

Il doit y avoir d'autres erreurs mais il se fait tard yikes...

Hors ligne

 

#3 05-01-2012 00:56:51

Lucie U_U
Nouveau membre
Date d'inscription: 04-01-2012
Messages: 5

Re: Ajax et zend

merci mais il y a toujours des erreurs

Hors ligne

 

#4 05-01-2012 10:13:00

Ithier
Membre
Date d'inscription: 05-01-2010
Messages: 85

Re: Ajax et zend

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":

Code:

[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

Code:

[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

 

#5 05-01-2012 14:13:38

Lucie U_U
Nouveau membre
Date d'inscription: 04-01-2012
Messages: 5

Re: Ajax et zend

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

 

#6 05-01-2012 15:17:01

Ithier
Membre
Date d'inscription: 05-01-2010
Messages: 85

Re: Ajax et zend

Ha oui j'ai oublié d'adapter cette partie du code.

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

 

#7 05-01-2012 15:56:13

Lucie U_U
Nouveau membre
Date d'inscription: 04-01-2012
Messages: 5

Re: Ajax et zend

Merci trop gentil big_smile

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages