Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 28-01-2012 18:34:37

zizou86
Membre
Date d'inscription: 22-05-2009
Messages: 48

Probléme d'une Réponse JSON bizarre

Bonjour,

je développe une application avec Zend et je veux utiliser Ajax.
le probléme c'est que je reçois une réponse JSON comme suit

Code:

le nombre des résultats que je dois les recevoir est 2 mais je les reçois vides
{"users":[{},{}]}

par contre si je fait var_dump il me retourne un array à deux éléments non vides

Merci d'avance pour votre aide.

Hors ligne

 

#2 28-01-2012 20:52:32

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

Re: Probléme d'une Réponse JSON bizarre

Si tu pouvais nous montrer un peu plus de code... smile

Hors ligne

 

#3 28-01-2012 21:01:39

zizou86
Membre
Date d'inscription: 22-05-2009
Messages: 48

Re: Probléme d'une Réponse JSON bizarre

Voilà le code et Merci d'avance.

***** J'utilise JQUERY*****


Le Bootstrap

Code:

    public function _initViewHelpers(){
        
        $this->bootstrap('layout');
        $layout = $this->getResource('layout');
        $view = $layout->getView();    
        Zend_Layout::startMvc();
        
        $view->doctype('HTML4_STRICT');
        $view->headTitle('Login');
        $view->headMeta()->appendHttpEquiv('Content-type','text/html;charset=utf-8');
        $view->headLink()->appendStylesheet('/css/style.css');
        $view->headLink()->appendStylesheet('/css/ltr.css');
        ZendX_JQuery::enableView($view);
    }
    
    protected function _initJquery() {
    
        $this->bootstrap('view');
        $view = $this->getResource('view'); //get the view object
    
        //add the jquery view helper path into your project
        $view->addHelperPath("ZendX/JQuery/View/Helper", "ZendX_JQuery_View_Helper");
    
        //jquery lib includes here (default loads from google CDN)
        $view->jQuery()->enable()
                       ->addStylesheet('https://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/ui-lightness/jquery-ui.css')//add the css
                       ->uiEnable();//enable ui
    
    }

Le Controlleur

Code:

    public function init()
    {
        $contextSwitch = $this->_helper->getHelper('contextSwitch');
        $contextSwitch->addActionContext('list','json')
                      ->initContext();
    }

    public function listAction()
    {
        $mapper = new Users_Model_UserMapper();
        $result = $mapper->fetchAll();
        $paginator = new Zend_Paginator(new Zend_Paginator_Adapter_Array($result));
        $paginator->setItemCountPerPage(4)
                       ->setCurrentPageNumber($this->_getParam('page'),1);
        
        $users = array();
        foreach($paginator as $user)
        {
            $users[] = $user;
        }
            
        $this->view->users = $users;
           
        if(!$this->_request->isXmlHttpRequest())
            $this->view->paginator = $paginator;
    }

ajaxtest.html

Code:

<script src="/js/jquery/js/jquery-1.7.1.min.js"></script>
<script>
$(document).ready(function(){
    $('#test').click(function(){
        $.ajax({
            url: '/fr/backend/users/list/',
            type : 'POST',
            data : 'format=json',
            async: false,
            success : function(response){
                //alert(response);
            }
        })
    })
})
</script>

<a id="test">test</a>

Hors ligne

 

#4 29-01-2012 13:52:39

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

Re: Probléme d'une Réponse JSON bizarre

Salut,

Je suis pas très calé en JavaScript... mais :

Quand tu fais joujou avec l'Ajax, tu as une aide de vue spécifique qui est AjaxContext (et qui remplace ContextSwitch) qui est spécialement faite pour réagir aux requêtes Ajax.

Code:

public function init()
    {
        $ajaxContext = $this->_helper->getHelper('ajaxContext');
        $ajaxContext->addActionContext('list','json')
                      ->initContext();
    }

Est-ce que ça change quelque chose ou ta réponse que tu récupères en JavaScript est toujours vide ? Logiquement, si tu spécifies bien 'json' dans la fonction addActionContext, il devrait automatiquement convertir toutes les valeurs que tu passes à la vue en json sans que tu n'ai besoin de le faire.

Hors ligne

 

#5 29-01-2012 18:48:19

zizou86
Membre
Date d'inscription: 22-05-2009
Messages: 48

Re: Probléme d'une Réponse JSON bizarre

j'ai changé comme vous m'avez demandé

Code:

        $ajaxSwitch = $this->_helper->getHelper('ajaxSwitch');
        
        $ajaxSwitch->addActionContext('list','json')
                      ->initContext();

il me retourne cet erreur

Code:

Fatal error: Uncaught exception 'Zend_Loader_PluginLoader_Exception' with message 'Plugin by name 'AjaxSwitch' was not found in the registry; used paths:
Zend_Controller_Action_Helper_: Zend/Controller/Action/Helper/' in /usr/share/php/Zend/Loader/PluginLoader.php:412

Hors ligne

 

#6 29-01-2012 19:22:50

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

Re: Probléme d'une Réponse JSON bizarre

Oops ce n'est pas AjaxSwitch mais AjaxContext le nom du helper, autant pour moi smile.

Hors ligne

 

#7 29-01-2012 19:27:14

zizou86
Membre
Date d'inscription: 22-05-2009
Messages: 48

Re: Probléme d'une Réponse JSON bizarre

ça me retourne deux tableaux vides !!!

Code:

{"users":[{}],"paginator":{}}

Hors ligne

 

#8 29-01-2012 19:38:21

zizou86
Membre
Date d'inscription: 22-05-2009
Messages: 48

Re: Probléme d'une Réponse JSON bizarre

Mais avec ajaxContext je reçois tous les resultat en JSON pas contre moi je travaille sur pagination en ajax de façon je dois récupérer un array paginator

Code:

    public function listAction()
    {
        $mapper = new Users_Model_UserMapper();
        $result = $mapper->fetchAll();
        $paginator = new Zend_Paginator(new Zend_Paginator_Adapter_Array($result));
        $paginator->setItemCountPerPage(1)
                  ->setCurrentPageNumber($this->_getParam('page'),1);
        
        $users = array();
        foreach($paginator as $user)
        {
            $users[] = $user;
        }
            
            $this->view->users = $users;
            //var_dump($this->_request->isXmlHttpRequest());
            if(!$this->_request->isXmlHttpRequest())
                $this->view->paginator = $paginator;

    }

Hors ligne

 

#9 29-01-2012 19:46:50

zizou86
Membre
Date d'inscription: 22-05-2009
Messages: 48

Re: Probléme d'une Réponse JSON bizarre

j'ai suivi ce tuto pour la pagination Tuto

Dernière modification par zizou86 (29-01-2012 19:47:11)

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