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 :

un ArrayStore en parametre d'une requete AJAX


Sujet :

Ext JS / Sencha

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 112
    Par défaut un ArrayStore en parametre d'une requete AJAX
    Bonjour,

    J'ai un problème de compréhension sur les échanges entre ExtJs et php par une requête Ajax.

    Voici les éléments :
    j'affiche sur une page un gridPanel contenant quelques lignes sur 3 colonnes.
    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
    16
    17
     
    			var secondGridStore = new Ext.data.ArrayStore({
    				fields : fields,
    				data   : myData2,
    				root   : 'records'
    			});
     
    			// create the destination Grid
    			var secondGrid = new Ext.grid.GridPanel({
    				ddGroup          : 'firstGridDDGroup',
    				id				 : 'PRT_choix',
    				store            : secondGridStore,
    				columns          : cols,
    				enableDragDrop   : true,
    				stripeRows       : true,
    				title            : 'PRT choisis'
    			});
    l'utilisateur peut enlever et ajouter des lignes
    A l'issue de ces modifications, je cherche, par une requête Ajax, à traiter les nouveaux éléments du GridPanel.
    C'est là que ça se complique pour moi.
    je passe en paramètre à cette requête les données de l'ArrayStore du gridPanel
    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
    16
    17
    18
    19
     
    function Envoi_choix()
    {
    Ext.onReady(function(){
     
    Var les_donnees = Ext.getCmp('PRT_choix').getStore().data;			
     
    	Ext.Ajax.request({
    			url: 'Peuple_choix_prt.php',
    			method:"POST",
    			success: function(result,request) {
    			Ext.MessageBox.alert(result.responseText);
    					},
    			failure: function (result, request) { 
    			Ext.MessageBox.alert('Problème', result.responseText); },
    			params: {Liste_choix:les_donnees}
    												}); 
    })
    }
    Seulement voilà, ces données sont en réalité un objet que le php recevant ne semble pas comprendre (impossible de les afficher pour l'instant.)
    Question : quel type de données puis-je me permettre de donner en paramètre au php afin qu'elles soient exploitables?

    merci de votre aide
    cordialement

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 267
    Par défaut
    bonjour,

    avec firebug, tu peux visualiser ce que extjs renvie comme parametre ...

    sinon, tu devras créer ta propre fonction callback pour convertir ton objet en chaine de caractère ...

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 112
    Par défaut
    Bonjour Taki

    En effet, il a fallu que je transforme mon objet en tableau. Car je voyais bien sous FireBug ce que j'envoyais mais Php ne lisait rien.

    Donc j'ai écrit cette petite moulinette, avant la requête Ajax, qui prend les données de base de l'arrayStore pour alimenter un Array (les_données[]). ça fonctionne déjà mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    	Ext.onReady(function(){
    	var les_donnees = new Array(); 
     
    	nb_lig = Ext.getCmp('PRT_choix').getStore().getCount();	
    	for (var i=0; i<nb_lig; i++) { 
    a = Ext.getCmp('PRT_choix').getStore().data.items[i].data.Code_PRT+"'";
    c = "'"+Ext.getCmp('PRT_choix').getStore().data.items[i].data.libelle_etat;
    	var d_transition = new Array;
            d_transition.push(a,c); 
    	les_donnees[i] = d_transition; 
    								};
    	Ext.Ajax.request({
    ...
    Toujours sous FireBug : le tableau construit semble correct.
    MAIS dans le php, je ne récupère que la dernière ligne du tableau !
    Pourtant j'envoie bien en paramètre tout le tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	params: {Liste_choix:les_donnees}
    encore un mystère !

    merci de ton aide
    MadMax

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 267
    Par défaut
    je te conseille d'utiliser la fonction join() de javascript ... pour transformer tout ca en chaine de caractère

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 112
    Par défaut
    merci Taki

    Effectivement, en échangeant des chaines de caractères : ça fonctionne.
    Du coup, je n'ai même plus besoin de construire un tableau pour le transformer en string : autant créer une string tout de suite !

    Une dernière question subsidiaire, tu as parlé dans ta précédente réponse d'une "fonction callback", qu'est-ce que tu entends par là ?

    encore merci
    madmax

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 267
    Par défaut
    une fonction de callback est une fonction de rappel ...

    en gros une fonction que tu appelles plusieurs fois pour faire un traitement précis ...

    Je te proposais de faire une fonction call back pour générer une chaine de caractère ... pour ton appel ajax

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/07/2006, 16h47
  2. Réponses: 2
    Dernier message: 13/05/2006, 13h25
  3. Réponses: 6
    Dernier message: 21/06/2005, 10h14
  4. Réponses: 2
    Dernier message: 20/06/2005, 14h57
  5. Mettre a jour les Parametres dans une requete SQL
    Par Tartar Ukid dans le forum C++Builder
    Réponses: 7
    Dernier message: 31/03/2004, 13h51

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