IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ext JS / Sencha Discussion :

extjs - json récupérer variables


Sujet :

Ext JS / Sencha

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2004
    Messages : 5
    Par défaut extjs - json récupérer variables
    Bonjour,
    Je débute et j'ai un souci avec EXTJS. Je n'arrive pas à récupérer les valeurs d'un json dans des variables.

    voici à quoi ressemble mon json:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "info:[{"0":"Micheal","prenom":"Micheal","1":"Dubois","nom":"Dubois","2":"21","age":"21"}]
    Voici mon store:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    var infostore = new Ext.data.JsonStore({
            url: 'connectpostgres.php',
    	root:'info',
    	id:'info' ,
     
    	fields: [ 
     
    			{name:'prenom'} 
    			,{name:'nom'} 			
    			,{name:'age'} 
     
    		]
    });
      infostore.load();

    Mais maintenant je voudrais afficher dans un panel ces résultats: (pas de grid)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    var resultats= new Ext.FormPanel({
            labelWidth: 50, 
            frame:true,
            bodyStyle:'padding:5px 5px 0',
            width: 230,
            items: 
    	    [{
    	      xtype: 'label',  
                  fieldLabel: 'prénom', 
                  text:  ?????              
    	    },{
    	       .....
    Voila je ne sais pas comment attribuer la valeur de 'prénom' à text???

    D'avance merci de votre aide .

  2. #2
    Membre éclairé
    Avatar de abraxis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 439
    Par défaut
    Bonjour,

    Avant tout je ne pense pas que ton Json soit correct.
    Pour tester la validité de ton Json va sur ce site :
    http://jsonlint.com/

    Pour éviter de construire le Json à la main, utilise json_encode() en php ^^

    Pour attribuer la valeur à ton champ, il faut faire un load() mais sur le formulaire
    Tu n'a pas besoin de ton jsonStore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    var resultats= new Ext.FormPanel({
            labelWidth: 50, 
            frame:true,
            bodyStyle:'padding:5px 5px 0',
            width: 230,
            items: 
    	    [{
    	      xtype: 'textfield',  
                  fieldLabel: 'prénom', 
                  name: 'fieldPrenom'              
    	    },{
    	       .....
    Ensuite il te reste à faire un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    resultats.load({
        url: 'connectpostgres.php'
    });
    Le Json que tu devra retourné sera composé comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"success": true, "data":{"fieldPrenom": "la_valeur_que _je_veux_afficher", .....}}
    Le 'success' et le 'data' étant obligatoire si tu veux que le load() remplisse le formulaire

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2004
    Messages : 5
    Par défaut
    Un grand merci à toi abraxis

    Effectivement c'est bien plus simple comme ça et surtout ça fonctionne

    A la prochaine

  4. #4
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    ton json me fait penser que tu utilise mysql sur ton serveur

    regarde les option de fetch celle que tu utilise remonte deux fois les données
    une fois par son numéro de colonne une fois avec le nom de colonne.

    il est bien plus simple et pratique de n'utiliser que les nom
    ainsi tu simple json_encode donne le bon résultat

    mais il y a encore mieux à faire
    c'est de faire un fetch (avec les noms)
    de construire un array pour la réponse
    si la requête à fonctionner faire
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $response = Array('success' => true,
    'data' => $sqlResultArray);
    et si la requête à échoué
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $response = Array('success' => false,
    'error' => "cause de l'erreur');

    ensuite il sufit de faire un
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo (utf8_encode(json_encode($result)));

    en agissant ainsi de façon systématique tu peux très facilement ajouter les champs nécessaire à la pagination le traitement de erreurs etc.

    je me suis fais une méthode qui le fait pour moi
    du coup mes contrôleurs php ne font que définir un tableau réponse
    deux exemples: pour un formulaire
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
        function editAction() {
            $contactId = $this->_request->get('id');
            $isAdd = $this->_getParam('isAdd', false);
     
            if ($this->_request->isPost()) {
                $post = array_map('utf8_decode', $this->_request->getPost());
     
                $datas=array (
                    'ctct_name'      => htmlspecialchars($post['contact_name'], ENT_QUOTES),
                    'ctct_firstname' => htmlspecialchars($post['contact_firstname'], ENT_QUOTES),
                    'ctct_mail'      => htmlspecialchars($post['contact_mail'], ENT_QUOTES),
                    'ctct_phone'     => ereg_replace("([0-9]{1}).([0-9]{2}).([0-9]{2}).([0-9]{2}).([0-9]{2})", "\\1\\2\\3\\4\\5", $post['contact_phone']),
                    'ctct_genre'     => (int)$post['contact_genre'],
                    'grp_id'         => (int)$post['contact_group']
                );
                if (!$isAdd) {
                    $res = $this->model->updateContact($contactId, $datas);
                } else {
                    $res = $this->model->insertContact($datas);
                }
                #Fast_Debug::show($isAdd, $res);
     
                if (!$res->success) {
                    $res->error = UNAVALABLE;
                }
                $this->response = $res;
            } else {
                if (!$isAdd) {
                    $data = $this->model->getContactById($contactId);
                    if (isset($data->contact_phone)) {
                        $data->contact_phone = ereg_replace("([0-9]{1})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})", "0\\1 \\2 \\3 \\4 \\5", $data->contact_phone);
                    } else {
                        $data->contact_phone = null;
                    }
                } else {
                    $data = null;
                }
     
                if ($data) {
                    $this->_setListResponse(array($data));
                } else {
                    $this->_setListResponse(null);
                }
            }
        }
    ou pour un grid :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        public function getlistAction()
        {
            $data = $this->model->getGroupList();
            $this->_setListResponse($data);
        }

    ma méthode _setListResponse est for simple
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
        protected function _setListResponse($data, $count = null) {
            if (is_array($data) || null != $count) {
                if (null == $count) {
                    $count = count($data);
                }
                $this->response = array(
                    'success' => true,
                    'results' =>$count,
                    'count' =>count($data),
                    'rows'=> $data
                );
            } else {
                $this->response = array(
                    'success' => false,
                    'error' => RES_EMPTY,
                    'results' =>0,
                    'count' =>0,
                    'rows'=> null
                );
            }
        }
    A+JYT

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] Récupérer variable json dans fichier .html
    Par boboss123 dans le forum jQuery
    Réponses: 7
    Dernier message: 23/04/2013, 09h03
  2. Récupérer variable php au format json
    Par switchmo dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/05/2011, 14h48
  3. Récupérer variables d'1 <form> et les utiliser dans X
    Par honeyz dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 20/04/2006, 11h39
  4. [SQL*PLUS] Récupérer variable
    Par tonysky dans le forum Oracle
    Réponses: 4
    Dernier message: 15/02/2006, 07h56
  5. [ActionScript] Récupérer variable dans URL
    Par JohnBlatt dans le forum Flash
    Réponses: 2
    Dernier message: 20/07/2005, 10h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo