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 :

callback:function(records, operation, success)


Sujet :

Ext JS / Sencha

  1. #1
    Membre averti Avatar de solo190
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 412
    Points : 321
    Points
    321
    Par défaut callback:function(records, operation, success)
    bonjour à tous ,
    je suis debutant en ext js , et la je suis confronté à un problème.
    ma requette s'ecécute bien mais je n'arrive pas à continuer mais traitement car une valeur de ma fonction de retour n'est exacte.
    voici le code que j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     handler: function () { 
        store.load({ 
    	params:{
    		start: 0, 
    		limit: 1
    	}, 
            scope: this,
            callback:function(records, operation, success) {
                if (success) { alert('yes');
    voici le message d'erreur que j'obtient dans ma console
    Uncaught TypeError: undefined is not a function ext-all.js:38Ext.define.processResponse ext-all.js:38(anonymous function) ext-all.js:38Ext.apply.callback ext-all.js:38Ext.define.onComplete ext-all.js:38Ext.define.onStateChange ext-all.js:38(anonymous function)
    merci de votre apport !
    www.etech-keys.com
    https://sms.etech-keys.com

    le boiteux qui suit le chemin devance le coureur qui s'en écarte .

  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
    Nous n'avons pas la fin de ta fonction.

    plutôt que d'utiliser la callback de la config de la méthode load
    tu peux agir sur l'événement load du store.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    store.on('load', function(store, records, successful, eOpts) {
      ...
    };
    store.load();
    la différence est que avec ta façon de faire le callback n'est appelé que sur l'instruction load que tu as écrite
    avec l'événement se sera le cas chaque fois que le store sera chargé (par exemple par la pagination).

    généralement avec sencha on n'écrit jamais d'appel spécifique à la méthode load. on laisse le famework faire.
    et on réagit au événement.

    A+JYT

  3. #3
    Membre averti Avatar de solo190
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 412
    Points : 321
    Points
    321
    Par défaut
    je vous remercié (Sekaijin) pour vos interventions , celles-ci m'ont permis de modifier mon code ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     {
        text:'Rechercher',
        store: Ext.create('KitchenSink.store.dstore_Recherche_Numero_Presc'),
        handler: function () { 
            console.log('laba ');
            store.on('load', function(store, records, successful, eOpts) {
                if(records) {
                    console.log('chargement en cours ');
                }
            });
            store.load();
            console.log('ici ');
        }
    }
    mais jusque là, je n'obtiens pas ce que je veux car dans la console il y'a bien les Message 'laba' et 'ici'.
    mais le message 'chargement en cours' lui n'est jamais affiché pourtant le store est bien chargé, il a deux valeurs.
    Merci de votre soutient !
    www.etech-keys.com
    https://sms.etech-keys.com

    le boiteux qui suit le chemin devance le coureur qui s'en écarte .

  4. #4
    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
    je verrais plutôt quelque chose comme
    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
    {
      text:'Rechercher',
      store: Ext.create('KitchenSink.store.dstore_Recherche_Numero_Presc', {
        listeners: {
          load: {
            fn : function(store, records, successful, eOpts) {
              if(records) {
                console.log('chargement en cours ');
              }
            },
            scope : this
          }
        }
      }),
      handler: function () {
        store.load();
    ...
    je rappelle que le chargement est asynchrone

    le mieux serait se mettre le listenne dans la définition de dstore_Recherche_Numero_Presc

    A+JYT

  5. #5
    Membre averti Avatar de solo190
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 412
    Points : 321
    Points
    321
    Par défaut
    sekaijin,
    voici comment j'ai modifier le code mais j'ai toujours les meme erreurs,
    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
    20
    {
        text:'Rechercher',
        store: Ext.create('KitchenSink.store.dstore_Recherche_Numero_Presc', {
            listeners: {
                load: {
                    fn : function(store, records, successful, eOpts) {
                        if(successful) {
                            console.log('chargement en cours ');
                        }
                    },
                    scope : this
                }
            }
        }),
        handler: function () {
            console.log('Arret 1');
            store.load();
            console.log('Arret 2');
        }
    },
    mon problème se serait pas par hasard ailleurs ?
    voici les messages que j'ai dans ma console
    Arret 1 app/view/examples/forms/Numero_Prescription.js:69
    Arret 2 app/view/examples/forms/Numero_Prescription.js:71
    Uncaught TypeError: undefined is not a function
    undefined is not a function correspond à quoi ? puisqu'il pointe sur le fichier ext-all.js:38 ;
    Merci .
    www.etech-keys.com
    https://sms.etech-keys.com

    le boiteux qui suit le chemin devance le coureur qui s'en écarte .

  6. #6
    Membre averti Avatar de solo190
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 412
    Points : 321
    Points
    321
    Par défaut
    en cas de besoin voici l'instruction de la ligne 71 de mon code : store.load();
    www.etech-keys.com
    https://sms.etech-keys.com

    le boiteux qui suit le chemin devance le coureur qui s'en écarte .

  7. #7
    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
    non cela est logique
    tu passe dans ton handler
    tu écris arrêt 1
    puis tu envois la requête au serveur
    tu écris ensuite arrêt 2
    et tu reçois la réponse du serveur
    et c'est là que tu as ton erreur

    tu devrais utiliser ext-all-debug à la place de ext-all
    tu lance ton appli et sous chrome ou sous ff tu tape F12 (sous IE ça dépends de la versio pour lancer le deboggeur)

    tu exécutes ta fonction et la console affiche l'erreur
    tu clique sur la ligne pour ouvrir le source de Ext-all-debug (attention c'est long)
    une fois la méthode trouvée tu mets un point d'arrêt au début.
    et tu relance ton handler

    lorsque ton prog s'arrête tu a la possibilité de voir tes variables.

    A+JYT
    PS il existe une extension chrome pour voir aussi les objets extjs

  8. #8
    Membre averti Avatar de solo190
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 412
    Points : 321
    Points
    321
    Par défaut
    sekaijin,
    après avoir utilisé ext-all-debug j'ai vu ou se trouve l'erreur mais je n'arrive pas à l’interpréter.
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
               proxy: me
            });
     
            request.url = me.buildUrl(request);
     
     
            operation.request = request;
     
            return request;
        },
     
     
        processResponse: function(success, operation, request, response, callback, scope) {
            var me = this,
                reader,
                result;
     
            if (success === true) {
                reader = me.getReader();
     
     
     
                reader.applyDefaults = operation.action === 'read';
     
                result = reader.read(me.extractResponseData(response));   // ligne ou se trouve l'erreur !
     
                if (result.success !== false) {
     
                    Ext.apply(operation, {
                        response: response,
                        resultSet: result
                    });
     
                    operation.commitRecords(result.records);
                    operation.setCompleted();
                    operation.setSuccessful();
                } else {
                    operation.setException(result.message);
                    me.fireEvent('exception', this, response, operation);
                }
            } else {
    Merci de votre soutient !
    www.etech-keys.com
    https://sms.etech-keys.com

    le boiteux qui suit le chemin devance le coureur qui s'en écarte .

  9. #9
    Membre averti Avatar de solo190
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 412
    Points : 321
    Points
    321
    Par défaut
    je pense que le problème pourrai aussi provenir de la syntaxe de mon json qui peut mal etre ecris
    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
    20
    21
    22
    23
    Ext.define('KitchenSink.store.dstore_Recherche_Numero_Presc',{
        extend: 'Ext.data.JsonStore',
        fields: ['Nom', 'Prenoms', 'numero'],
        });
       // console.log('Dans le store');
        var store = Ext.create('Ext.data.JsonStore', {
     
     
        model: 'KitchenSink.store.dstore_Recherche_Numero_Presc',
        autoload:true,
        totalProperty: 'totalCount',
        proxy: {
                type: 'ajax',
                url : 'app/php/Recherche_Numero_Prescription.php',
                reader: {
                            type: 'json',
    			root: 'data',
    			idProperty: 'id',
    			totalProperty: 'total'
                    }
                } 
        }
     );
    Merci !
    www.etech-keys.com
    https://sms.etech-keys.com

    le boiteux qui suit le chemin devance le coureur qui s'en écarte .

  10. #10
    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 : 47
    Localisation : France

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

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

    Donne nous un exemple de ton JSON que l'on puisse regarde si il est correctement formé.
    # apt-get install freedom

  11. #11
    Membre averti Avatar de solo190
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 412
    Points : 321
    Points
    321
    Par défaut
    voici un exemple de mon json
    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
    20
    21
    22
    23
    Ext.define('KitchenSink.store.dstore_Recherche_Numero_Presc',{
        extend: 'Ext.data.JsonStore',
        fields: ['Nom', 'Prenoms', 'numero'],
        });
       // console.log('Dans le store');
        var store = Ext.create('Ext.data.JsonStore', {
     
     
        model: 'KitchenSink.store.dstore_Recherche_Numero_Presc',
        autoload:true,
        totalProperty: 'totalCount',
        proxy: {
                type: 'ajax',
                url : 'app/php/Recherche_Numero_Prescription.php',
                reader: {
                            type: 'json',
    			root: 'data',
    			idProperty: 'id',
    			totalProperty: 'total'
                    }
                } 
        }
     );
    www.etech-keys.com
    https://sms.etech-keys.com

    le boiteux qui suit le chemin devance le coureur qui s'en écarte .

  12. #12
    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 : 47
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 439
    Points : 658
    Points
    658
    Par défaut
    Le flux JSON est la réponse que te retourne ta page php (Recherche_Numero_Prescription.php).
    # apt-get install freedom

  13. #13
    Membre averti Avatar de solo190
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 412
    Points : 321
    Points
    321
    Par défaut
    Merci,
    je m'excuse.
    voici mon Json
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"root_valide":[{"Nom":"ABESSOLO","Prenoms":"STEPHANE","numero":"00000000000"},{"Nom":"ABOSSOLO","Prenoms":"MICHELE SIDONIE","numero":"00000000000"}],"totalCount":2}
    www.etech-keys.com
    https://sms.etech-keys.com

    le boiteux qui suit le chemin devance le coureur qui s'en écarte .

  14. #14
    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 : 47
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 439
    Points : 658
    Points
    658
    Par défaut
    Pour moi ton JSON est correct.

    A confirmer pour les corrections :
    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
    var store = Ext.create('Ext.data.JsonStore', {
     
     
        model: 'KitchenSink.store.dstore_Recherche_Numero_Presc',
        autoload:true,
        totalProperty: 'totalCount',
        proxy: {
                type: 'ajax',
                url : 'app/php/Recherche_Numero_Prescription.php',
                reader: {
                            type: 'json',
    			root: 'root_valide',
    			idProperty: 'id',
    			totalProperty: 'totalCount'
                    }
                } 
        }
     );
    # apt-get install freedom

  15. #15
    Membre averti Avatar de solo190
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 412
    Points : 321
    Points
    321
    Par défaut
    j'ai modifié la création de mon store comme le tiens ,
    lorsque j'exécute j'ai bien ' Arrêt 1' et ' Arrêt 2' qui s'affiche dans ma console mais jamais ' chargement en cours' .
    j'ai ce message d'erreur dans ext-all-debug :
    result = reader.read(me.extractResponseData(response)); : undifne is not a funtion
    je pense pour ma part que le reader de mon store est peut etre mal configuré !
    a noté que je suis en ext js 4.1.1a
    www.etech-keys.com
    https://sms.etech-keys.com

    le boiteux qui suit le chemin devance le coureur qui s'en écarte .

  16. #16
    Membre averti Avatar de solo190
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 412
    Points : 321
    Points
    321
    Par défaut
    après avoir enlevè ces deux lignes, je n'ai plus de message d'erreur .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     model: 'KitchenSink.store.dstore_Recherche_Numero_Presc',
        autoload:true,
    mais jusque la je n'arrive pas à joindre un evenement au chargement de mon store.
    www.etech-keys.com
    https://sms.etech-keys.com

    le boiteux qui suit le chemin devance le coureur qui s'en écarte .

  17. #17
    Membre averti Avatar de solo190
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 412
    Points : 321
    Points
    321
    Par défaut
    lorsque je modifie le mon boutton comme ceci
    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
    20
    21
    22
    23
    24
    {
                                text:'Rechercher',
                                store: Ext.create('KitchenSink.store.dstore_Recherche_Numero_Presc', {
     
                                }), 
                                handler: function () {
                                                    console.log('Arret 1');
                                                    store.load( {
                                                                    params:{
    									start: 0, 
    									limit: 10
    									}
                                                    }),
                                                    store.on('load',function (store, records, successful, eOpts ){
                                                            if(successful) {   // s'il n y 'a pas eu d'eereur
                                                            console.log('oui');
                                                        }
     
                                                     });
                                                    console.log('Arret 2');
                                                }
     
     
                            },
    j'ai plus d'erreur , tout est ok !
    Merci à tous
    www.etech-keys.com
    https://sms.etech-keys.com

    le boiteux qui suit le chemin devance le coureur qui s'en écarte .

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

Discussions similaires

  1. callback function net-snmp
    Par maycem_amor dans le forum Réseau
    Réponses: 0
    Dernier message: 21/03/2014, 17h14
  2. paramétrisation des callback functions
    Par oodbae_adriano dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 13/09/2011, 15h40
  3. Callback function Display
    Par fleurdelys77 dans le forum OpenGL
    Réponses: 6
    Dernier message: 01/08/2011, 16h19
  4. Callback function avec une DLL
    Par dadouuuu dans le forum Débuter
    Réponses: 5
    Dernier message: 18/04/2010, 21h07
  5. Traduction C++/Delphi DLL et function Callback
    Par Crafton dans le forum Langage
    Réponses: 12
    Dernier message: 23/02/2006, 09h55

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