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

Bibliothèques & Frameworks Discussion :

Grid : "Une erreur est survenue" sur IE [Dojo]


Sujet :

Bibliothèques & Frameworks

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 38
    Points : 37
    Points
    37
    Par défaut Grid : "Une erreur est survenue" sur IE
    Bonjour, (Help !)

    J'ai une grid qui connectée à un itemFileReadStore.
    Les données viennent d'un script php, voici ce qui est renvoyé d'après firebug :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /*{ identifier: 'mm',  items:  [ { mm: '1', magasin: 'xxxxxxxxx SARL', qte: '154', ttc: '55206.00' }, ], jms:'  Juillet' }*/
    Sous Firefox et Chrome, ma grid affiche bien la ligne.
    Sous Internet explorer 7 et 8, La grid affiche "Une erreur est survenue"
    Le site est dans la zone intranet local à laquelle j'ai donné la sécurité la plus basse.

    J'ai passé des heures sous le débugger d'IE8 sans arriver à trouver d'où ca vient, c'est trop le bazar je n'arrive pas à suivre.

    Chuis paumé !

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 38
    Points : 37
    Points
    37
    Par défaut
    Bon alors j'arrive maintenant à tracer le problème convenablement, j'ai téléchargé les sources de dojo, c'est plus lisible.

    Le bug arrive dans ce code :

    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 getHandler = dojo.xhrGet(getArgs);
    getHandler.addCallback(function(data){
    	try{
    		self._getItemsFromLoadedData(data);
    		self._loadFinished = true;
    		self._loadInProgress = false;
     
    		filter(keywordArgs, self._getItemsArray(keywordArgs.queryOptions));
    		self._handleQueuedFetches();
    	}catch(e){
    		self._loadFinished = true;
    		self._loadInProgress = false;
    		errorCallback(e, keywordArgs);
    	}
    });
    Dans _getItemsFromLoadedData, il se passe ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // Step 1: Walk through the object hierarchy and build a list of all items
    var i;
    var item;
    this._arrayOfAllItems = [];
    this._arrayOfTopLevelItems = dataObject.items;

    avant d'exécuter cette dernière ligne, on a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    this._arrayOfTopLevelItems.length	0	Number
     
    [-]		dataObject.items	{...}	Object
                    [+]		[0]	{...}	Object
    après exécution, this._arrayOfTopLevelItems.length prend la valeur 2 !!! alors que l'objet _arrayOfTopLevelItems ne contient bien que l'élément unique présent dans dataObjetc.items.

    A cause de cela, la suite du cote lève une exception qui conduit à afficher le message.

    Le problème, c'est que je vois le comment, mais je ne comprends toujours pas le pourquoi.

  3. #3
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut,

    Cela vient certainement de ta structure JSON :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    { identifier: 'mm',  
       items:  [ 
                   { mm: '1', magasin: 'xxxxxxxxx SARL', qte: '154', ttc: '55206.00' }
                    , /* cette virgule est en trop */
                  ], 
       jms:'  Juillet' }
    Le souci c'est la dernière virgule du tableau: IE croit qu'il y a un élément supplémentaire et induit la taille de 2. Les autres navigateurs rectifient en n'en pas tenant compte ...

    ERE

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 38
    Points : 37
    Points
    37
    Par défaut
    Emmanuel, tu assures comme un dieu.
    Et moi je suis un crétin.

    Bref, merci beaucoup, le problème venait de là.

    Reste que sous le debugger de IE8 lorsque je regardais l'objet il ne contenait qu'un seul élément malgré que length = 2. Probablement il y a un détail qui m'échappe avec le débugger, c'est la première fois que je l'utilisais.

  5. #5
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Citation Envoyé par viro Voir le message

    Reste que sous le debugger de IE8 lorsque je regardais l'objet il ne contenait qu'un seul élément malgré que length = 2. Probablement il y a un détail qui m'échappe avec le débugger, c'est la première fois que je l'utilisais.
    Comme l'élément est vide peut-être ne le distingue-t-on pas vraiment (graphiquement) dans le debugger ?

    Enfin, bon dev,

    ERE

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/10/2014, 20h47
  2. Réponses: 4
    Dernier message: 24/10/2011, 19h18
  3. Une erreur est survenue lors de l'ouverture de ce document.
    Par slaima15 dans le forum Erreurs - Avertissements
    Réponses: 2
    Dernier message: 20/06/2010, 01h54
  4. Réponses: 1
    Dernier message: 02/06/2008, 21h40
  5. Savoir si une connection est établie sur un port
    Par Malone dans le forum Web & réseau
    Réponses: 3
    Dernier message: 06/12/2003, 09h22

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