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 :

Store.load, callback et success=false


Sujet :

Ext JS / Sencha

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Par défaut Store.load, callback et success=false
    Salut à tous,

    j'ai un problème avec le retour de mon store.load lorsque dans mon json, le success = false.
    le callback n'est pas exécuté.

    Par contre si mon success=true tout se passe très bien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ext.data.JsonP.callback1({"success":true,"total":29,"totalMaxScore":15.9694,"rows":[{"fs":"DO......"}]});
    Si mon success=false alors je ne rentre même pas dans ma fonction callback, le console.log() ne s'affiche pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ext.data.JsonP.callback15({"success":false,"total":0,"totalMaxScore":1,"rows":[]});
    Voici mon store.load

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
                myInfGrid.getStore().load({
                    scope: this,
                    params: { 
     
                    },                
                    callback: function(records, operation, success) {
     
                      console.log('inside callback');
     
                    }
                });
    Merci pour votre aide,

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Par défaut
    Alors après avoir fait quelques essais, je m'aperçois que même si mon success est true mais que le rows est vide alors je ne rentre pas dans le callback

    je continue mon investigation.....

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Par défaut
    Bon il semble que si je veux entrer dans mon callback il faut 2 choses:

    1. que mon success soit à true
    2. que mon rows ait au moins un enregistrement

    Cela n'a pas de sens ?!! à quoi sert le success alors ??!!

    ou alors mon JSON est erroné et le false ne s'écrit pas de cette manière.

    J'ai essayé: false avec des rows, false sans des enr. dans rows, ... un peu toute les combinaisons et seul
    true + enregistrement entre dans le callback ?!

    une idée ? j'ai loupé quelque chose ??

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Par défaut
    bon du nouveau mais toujours pas de gestion du success = false ok.

    Si dans la définition de mon Store, j'ajoute un listener de ce type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    listeners : {
                    exception : function(proxy, response, operation) {
                        //exception handling
                        alert('exception');
                    }
                }
    Lorsque success=false, j'ai bien l'alert qui s'affiche, et si c'est success=true, l'alert ne s'affiche pas...

    Le problème c'est que ce listener est dans ma déclaration de mon proxy et non pas dans le mon .load

    comment faire pour lui dire de gérer ça dans mon callback ? là je sèche.... please une idée !

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Par défaut
    Pour info, voici mon store pour mon infinite grid:

    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
    42
    43
    44
    Ext.define('PP.store.InfPs', {
        extend      : 'Ext.data.Store',
        model       : 'PP.model.InfP',
        autoLoad    : false,
        storeId     : 'storeIdInfP',
     
        remoteSort  : true,
        // allow the grid to interact with the paging scroller by buffering
        buffered    : true,
     
        leadingBufferZone   : 10, // The number of records to keep rendered below the visible area.
        trailingBufferZone  : 10, // The number of records to keep rendered above the visible area.
        numFromEdge         : 5,  // How close the edge of the table should come to the visible area before the table is refreshed further down.
     
        pageSize            : 25,
        purgePageCount      : 0,    
     
        proxy: {
            type        : 'jsonp',
            limitParam  : 'rows',
            pageParam   : 'start',
     
            reader: {
                totalProperty   : 'total', // si omit alors totalProperty prend aussi la valeur "total"
    ...
                messageProperty : 'message',
                successProperty : 'success',
                root            : 'rows'
            },
            listeners : {
                    exception : function(proxy, response, operation) {
                        //exception handling
                        alert('Error in InfP');
                    }
            },        
            // sends single sort as multi parameter
            simpleSortMode      : true
        },
        sorters: [{
            property : 'pd',
            direction: 'DESC'
        }]
     
     });

  6. #6
    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
    effectivement il semble qu'il y ait une grosse confusion.

    JSONP ne fonctionne pas comme JSON
    la réponse attendue n'est pas du tout la même.

    pour gérer une réponse du type{"success":false,"total":0,"totalMaxScore":1,"rows":[]}il faut utiliser un proxy AJAX avec un reader JSON et non un proxy JSONP
    JSONP attend une réponse genresomeCallback({users: [{id: 1,name: "Ed Spencer",email: "ed@sencha.com"}]}); il n'y a pas de success géré dans JSONP
    Le serveur dois constituer une réponse conforme et s'il n'y parvient pas il doit généré une erreur http
    qui sera captée par le gestionnaire d'exception du proxy

    A+JYT

Discussions similaires

  1. Treegrid, Store : Récupérer le totalProperty dans le callback ?
    Par Bruno13 dans le forum Ext JS / Sencha
    Réponses: 2
    Dernier message: 01/04/2014, 22h25
  2. [AJAX] synchronicité et callback (success) en mode async
    Par InfoGeo dans le forum jQuery
    Réponses: 22
    Dernier message: 04/12/2012, 09h49
  3. [ExtJs 4 Sencha Architect] Différence entre autoload et load d'un store
    Par Jeune_Developpeur dans le forum Ext JS / Sencha
    Réponses: 0
    Dernier message: 05/11/2012, 17h40
  4. load instance d'un model depuis store
    Par blacksf dans le forum Ext JS / Sencha
    Réponses: 1
    Dernier message: 17/10/2012, 07h27
  5. ERROR 1314 (0A000): LOAD DATA is not allowed in stored proce
    Par pointe dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 17/11/2005, 12h50

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