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.util.JSON et tableau Associatif


Sujet :

Ext JS / Sencha

  1. #1
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 151
    Points : 54
    Points
    54
    Par défaut Extjs.util.JSON et tableau Associatif
    Bonjour
    J'ai un tableau js sous cette forme
    0 'Titre1' => XXXXX
    'Titre2' => 'SousTitre1' => 'YYYYY'
    'SousTitre2' => 'ZZZZZ'
    1 'Titre1' => XXXXX
    'Titre2' => 'SousTitre1' => 'YYYYY'
    'SousTitre2' => 'ZZZZZ'
    J'ai essayé avec Extjs.util.JSON sans succès, pour le mettre à plat. L'objectif est de passer via Ext.Ajax.Request (method: Post) à un script php.

    Avez-vous des idées?

    Merci de votre aide
    Tio

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

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    data=Ext.util.JSON.encode(myArray);
    Ext.Ajax.request({
       url: 'foo.php',
       success: someFn,
       failure: otherFn,
       headers: {
           'my-header': 'foo'
       },
       params: { theArray: data }
    });
    coté php tu reçois dans dans $_POST[theArray]
    il te reste à décoder
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $myArray = json_decode($_POST[theArray]);
    A+JYT

  3. #3
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 151
    Points : 54
    Points
    54
    Par défaut
    Bonjour

    je n'ai pas réussit, J'ai choisit la simplicité, J'ai écrit le json sous forme de chaine de caractère au lieu de passer par un Array.

    Il faut d'ire qu'il n'était pas vraiment simple.


    Merci

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Quelques années plus tard, même problème rencontré mais vrai solution apportée :

    Comme indiqué ici : http://www.sencha.com/forum/showthre...ertainly-a-bug

    La solution consiste à déclarer sa variable non pas comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var myArray=new Array();
    mais comme cela :
    Et ainsi ceci fonctionne bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var myArray={};
    var element={};
    element['Titre1']='XXXXX1';
    element['SousTitre1']='YYYYY1';
    element['SousTitre2']='ZZZZZ1';
    myArray[0]=element;
    element['Titre1']='XXXXX2';
    element['SousTitre1']='YYYYY2';
    element['SousTitre2']='ZZZZZ2';
    myArray[1]=element;
    var data=Ext.util.JSON.encode(myArray);
    Il ne reste plus qu'à l'envoyer en Ajax comme proposé précédemment par "sekaijin"

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

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    faisons les choses simples
    en js pas de tableau associatif
    mais des tableaux ou des objets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    var myArray = new Array();;
    myArray.push({
      'Titre1':'XXXXX1',
      'SousTitre1':'YYYYY1',
      'SousTitre2':'ZZZZZ1'
    });
    myArray.push({
      'Titre1':'XXXXX2',
      'SousTitre1':'YYYYY2',
      'SousTitre2':'ZZZZZ2'
    });
    var data=Ext.util.JSON.encode(myArray);
    simple et efficace

    ce que rapporte sencha dans son blog c'est que utiliser un pour une tableau associatif engendre des pb

    du fait qu'en javascript un tableau est un objet et que est exactement identique àon se retrouve donc à utiliser un objet de type tableau en lui ajoutant non pas des éléments mais des membres ce qui pose problème.

    sencha propose à juste titre d'utiliser un objet et non un tableau dans ce cas là. on a donc un objet simple avec des membres (mais pas d'éléments)
    la syntaxe étant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    a = {};
    a['toto']=45;
    a.titi=12;
    qui peut s'écrire plus simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    a = {
      'toto': 45,
      'titi': 12};
    c'est le cas des ta variable élément

    par contre pour un tableau il vaut mieux utiliser oupour tout les tableau indicés.
    si tu utilise javascript va créer un objet a puis à affectation détecter que a n'a pas le bon type et le re-typer en tableau

    un code correct serait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    var myArray=[];//[] car c'est un tableau
    var element={}; // {} car c'est un objet
    element['Titre1']='XXXXX1';
    element['SousTitre1']='YYYYY1';
    element['SousTitre2']='ZZZZZ1';
    myArray[0]=element;
    element={}; // pour être sur d'avoir un nouvel objet
    element['Titre1']='XXXXX2';
    element['SousTitre1']='YYYYY2';
    element['SousTitre2']='ZZZZZ2';
    myArray[1]=element;
    var data=Ext.util.JSON.encode(myArray);
    A+JYT

Discussions similaires

  1. Json et tableau associatifs
    Par Finality dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 07/03/2010, 17h19
  2. tableau associatif en asp ?
    Par bigsister dans le forum ASP
    Réponses: 5
    Dernier message: 26/01/2005, 16h47
  3. asp tableau associatif
    Par rfernandez dans le forum ASP
    Réponses: 6
    Dernier message: 19/12/2003, 18h58
  4. [langage] TRI TABLEAU ASSOCIATIF
    Par proner dans le forum Langage
    Réponses: 5
    Dernier message: 04/03/2003, 16h38
  5. [langage] Réinitialiser un tableau associatif.
    Par totox17 dans le forum Langage
    Réponses: 2
    Dernier message: 28/01/2003, 16h29

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