Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework
Zend Framework Forum d'entraide sur la programmation PHP avec Zend Framework. Avant de poster -> FAQ ZF, Cours ZF
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/01/2012, 18h31   #1
Invité régulier
 
Inscription : octobre 2006
Messages : 24
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 24
Points : 6
Points : 6
Par défaut 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 :
1
2
3
 
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.
zizou86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2012, 21h55   #2
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 680
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 680
Points : 1 044
Points : 1 044
Bonsoir
Fais nous voir ton code.
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2012, 05h15   #3
Invité régulier
 
Inscription : octobre 2006
Messages : 24
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 24
Points : 6
Points : 6
Voilà le code et Merci d'avance.

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


Le Bootstrap
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
	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 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
    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 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<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>
zizou86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2012, 12h01   #4
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 680
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 680
Points : 1 044
Points : 1 044
Bonjour,
Tout d'abord le context Json n'utilise pas de vue pour retourner le résultat, celui ci est sérialisé puis renvoyé.

Si ce comportement ne te satisfait pas tu as la possibilité de désactivé la sérialisation :

Code :
1
2
 
$this->_helper->contextSwitch()->setAutoJsonSerialization(false);
Je t'invite également à voir le contexte ajaxContext sur la page suivante vers le milieu http://framework.zend.com/manual/fr/...onhelpers.html

Tu devrais donc seulement fire un return $users dans ton cas.

Sinon tu as une autre possibilité.
Tu désactive ton layout et ta view et pas besoin de context.
Et pour retourner tes données tu fais :

Code :
1
2
 
$this->_helper->json($users);
Ah j'allais oublié. Tu utilise Zend donc plutôt que de faire des var_dump, utilise Zend_Debug::dump();
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 06h17   #5
Invité régulier
 
Inscription : octobre 2006
Messages : 24
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 24
Points : 6
Points : 6
Merci pour votre aide 5h4rk mais je n'ai encore trouvé la solution ; (

J'ai essayé d'enlevé le contextSwitch et de désactivé layout et le view mais j'aurai la même résultat, un array vide.

en faite moi j'ai suivi ce
pour faire la pagination en ajax.

SVP trouvez moi une solution ou un autre tuto pour la pagination ajax avec JQuery.

Merci
zizou86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h16.


 
 
 
 
Partenaires

Hébergement Web