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

jQuery Discussion :

Lecture d'un fichier XML avec JQuery


Sujet :

jQuery

  1. #1
    Membre habitué Avatar de MGD_Software
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 137
    Points : 139
    Points
    139
    Par défaut Lecture d'un fichier XML avec JQuery
    Bonjour,

    NB: J'ai déjà posté cette discussion sur le forum XML, mais il me semble que celui-ci est plus adapté au problème.

    Je suis en train de développer une galerie de photos en JQuery (v1.11.2). Tous les paramètres de la page seront définis dans un fichier XML généré par une application externe, qui pour l'instant est écrit à la main.
    Lorsque j'exploite le fichier XML, Internet explorer plante sauvagement, tandis que Firefox et Chrome font le boulot.

    Cependant, dans la console de Firefox, je trouve un certain nombre de lignes "Mal formé", avec un nombre d'occurences (sans autre explication ni référence de ligne).
    Dans internet explorer, j'ai placé des couples try/catch pour trouver l'erreur. Le résultat est :
    TypeError : impossible d'obtenir la propriété "replace" d'une référence null ou non définie.

    Pourtant mon fichier XML me semble au carat. D'ailleurs s'il ne l'est pas (j'ai essayé), j'ai le message d'erreur du $.get dans tous les navigateurs.
    Il semblerait que le problème se situe au niveau du .find() : il y a autant d'erreurs que de lignes ou figurent un ou plusieurs .find()
    Quelqu'un a t-il une idée d'où provient l'erreur ? Je n'ai rien trouvé dans les FAQ qui ressemble à mon problème.
    Et je (re)précise que dans Firefox et Chrome, tous mes paramètres sont parfaitement lus.

    Pour info : IE : version 11.0.7, Firefox : Version 35.0, Chrome : Version 39.0.2171.99 m

    Voici le code de lecture du fichier XML :
    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 indexname = 'index.xml'
      $.get(indexname, null, null, 'xml')
      .success(readXML)
      .fail(function() { alert("Le fichier de description de l'album (" +   indexname + ")\nn'a pas été trouvé dans le répertoire de l'album\nou sa   structure est incorrecte.") });
     
    ...
    function readXML(){
      var title = $(xml).find('common').find('title').html();
      var size = parseInt($(xml).find('common').find('slidesize').text());
      .....
      $(xml).find('album').find('slide').each(function(){
         var title = $(this).find('title').text();
         var file = $(this).find('file').text();
         var ratio = parseFloat($(this).find('ratio').text());
         ....
      }
    }
    Internet Explorer plante dès le premier find().

    Voici le contenu (abrégé) du fichier XML :
    Code xml : 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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    <?xml version="1.0" encoding="utf-8"?>
    <album>
        <common>
            <title>Titre album</title>
            <comment>Ceci est un album realisé entièrement en   JavaScript<br /><br />Il utilise JQuery et   WebAlbums</comment>
            <slidesize>240</slidesize>
            <legendabove>1</legendabove>
        </common>
        <styles>
            <body>
                <font-family>Verdana, Arial, Helvetica, sans-serif</font-family>
                <font-size>12px</font-size>
                <color>#000000</color>
                <background-color>#EEFFFF</background-color>
                <margin-top>0px</margin-top> 
            </body>
            <div-container>
                <margin>0 auto 0 auto</margin>
                <background-color>#FFF</background-color>
                <display>table</display>
            </div-container>
            <div-title>
                <text-align>center</text-align>
            </div-title>
            <div-comment>
                <text-align>justify</text-align>
            </div-comment>
            <class-vignette>
                <width>300px</width>
                <border-width>1px</border-width>
                <border-style>solid</border-style>
                <border-color>#CCC</border-color>
                <margin>5px</margin>
                <float>left</float>
                <text-align>center</text-align>
            </class-vignette>
        </styles>
        <slide>
                <title>Dome "1"</title>
                <file>Dome1.jpg</file>
                <ratio>0.667</ratio>
        </slide>
        <slide>
                <title>Dome à Fira (Santorin)</title>
                <file>Dome2.jpg</file>
                <ratio>1.5</ratio>
        </slide>
    ...
        <slide>
                <title>Rue à Pyrgos (Santorin)</title>
                <file>Rue3.jpg</file>
                <ratio>0.667</ratio>
        </slide>
    </album>

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2006
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2006
    Messages : 226
    Points : 532
    Points
    532
    Par défaut
    salut,

    c'est une erreur de copier coller, ou t'as n'a vraiment pas d'argument pour "readXML()" ?

    et IE plante, ok... mais quoi ? il freeze, il se ferme ? que dit la console ?

  3. #3
    Membre habitué Avatar de MGD_Software
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 137
    Points : 139
    Points
    139
    Par défaut
    Effectivement, c'est une erreur de recopie.
    La déclaration de la fonction est : readXML(xml)
    Sinon, c'est sûr que ça ne peut pas fonctionner.
    J'ai 35 ans d'expérience en informatique et je pense que j'aurais trouvé ce gag tout seul.

    Pour IE, j'ai dit ce qui se passait : erreur de script, qui s'arrête net et ressort.
    et la console dit :
    TypeError : impossible d'obtenir la propriété "replace" d'une référence null ou non définie.

    Je ne comprends pas le message d'erreur, je ne vois pas ce que concerne le "replace", ou la référence en question.
    Je pense que l'erreur se situe dans le code de JQuery, mais je n'arrive pas à décortiquer le code super-compact et obscur de ce dernier pour trouver ce qui lui manque.

    J'ai trouvé sur le web plusieurs références à cette erreur, mais aucune qui concerne le .find() de JQuery.
    J'ai aussi testé mon fichier XML avec plusieurs browsers (dont les navigateurs internet), tous me sortent l'arborescence sans signaler d'erreur.

    J'ai aussi essayé de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $(xml).find('common').find('title').html()

    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $(xml).find('album > common > title').html()

    ce qui est beaucoup plus propre, mais le résultat est totalement identique: fonctionne sur firefox et Chrome (avec avertissement console) et ne fonctionne pas avec IE.


    Je cale...

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    a tout hasard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $($(xml)).find('common').find('title').html()
    ou
    xml.find('common').find('title').html()
    Sinon essaye de passer par un $.ajax avec un dataTyp: 'xml'
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre habitué Avatar de MGD_Software
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 137
    Points : 139
    Points
    139
    Par défaut Lecture fichier XML en JQuery
    $($(xml)).find('common').find('title').html() : me renvoie toujours un avertissement "Mal formé", mais Firefox me renvoie quand même la valeur, et IE plante
    xml.find('common').find('title').html() : xml étant un objet XML et non un objet JQuery, il ne possède pas la méthode find() --> Erreur dans tous les navigateurs

    Et j'ai déjà essayé ça (j'avais même commencé par ça) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $.ajax({
      url: 'index.xml',
      data: null,
      success: readXML,
      dataType: 'xml'
    });
    J'ai aussi essayé avec une chaîne vide au lieu de null pour data, sans résultat.
    D'ailleurs le problème ne vient pas de la requête, mais du traitement de l'objet renvoyé.
    Si je tape la requête dans la console, mais avec null au lieu de readXML, la requête s'exécute sans aucun avertissement.
    J'ai aussi essayé en retirant tous les espaces et retours-chariots inutiles dans le fichier, sans résultat sinon un fichier illisible à l’œil.

    JQuery.find() ne serait pas adapté à une recherche dans du XML ???

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2006
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2006
    Messages : 226
    Points : 532
    Points
    532
    Par défaut
    [EDIT]

    sous IE11, ça ça fonctionne:

    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 readXML(xml){
      var title = $(xml).find('album').find('common').find('title').text();
      var size = parseInt($(xml).find('common').find('slidesize').text());
     
      $(xml).find('album').find('slide').each(function(){
         var title = $(this).find('title').text();
         var file = $(this).find('file').text();
         var ratio = parseFloat($(this).find('ratio').text());
     
      });
    }
     
    $.ajax({
      url: './test.xml',
      data: null,
      success: readXML,
      dataType: 'xml'
    });

  7. #7
    Membre habitué Avatar de MGD_Software
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 137
    Points : 139
    Points
    139
    Par défaut
    Non, ça ne marche pas.
    Effectivement, les premières valeurs sont bien lues, mais s'il y a plusieurs clés portant le même nom, la boucle plante.
    Dans le fichier XML cité au début, il y a 9 entités "slide" avec chacune trois sous-entités, "title", "path" et "ratio".
    C'est parfaitement conforme aux règles du XML.
    Avec le code ci-dessus, le script plante sous IE après la première boucle each().

    Je propose de le tester avec le code proposé par kakashi99, légèrement modifié pour afficher le résultat des find().
    Firefox affiche bien les 9 lignes, avec 9 avertissements dans la console
    Internet Explorer 11 n'affiche rien. En pas à pas dans la console, il plante à la fin de la première boucle.
    Voici le code complet de la page, qui est aussi testable à l'adresse : http://mgd.zz.mu/albums/album1/test.html
    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
    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Test de lecture XML</title>
    <script type="text/javascript" src="../_gestion/jquery.js"></script>
    <script type="text/javascript">
    $(document).ready(function()
    {
        function readXML(xml) {
            $(xml).find('album').find('slide').each(function(){
                 var title = $(this).find('title').html();
                 var file = $(this).find('file').text();
                 var ratio = parseFloat($(this).find('ratio').text());
                $('body').append('Fichier : ' + file + ', Titre : ' + title + '<br>');
            });
        }
     
        $.ajax({
            url: './index.xml',
            data: null,
            success: readXML,
            dataType: 'xml'
        });
    })
    </script>
    </head>
     
    <body>
    </body>
    </html>
    J'ai essayé :
    $(xml).find('album').find('slide').each(function(){... : même résultat
    var slides = $(xml).find('album').find('slide'); for(var i=0; i<slides.length; i++ {... même résultat

    D'autres suggestions ? (testez-les avec le fichier XML fourni). Merci.

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2006
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2006
    Messages : 226
    Points : 532
    Points
    532
    Par défaut
    salut,

    es-tu sur de la version de ton ficher html sur ton serveur ??

    perso chez moi ça marche, quand j'inspecte ta page, le script est dans body... body qui est semblerait "écrasé" par le contenu du fichier xml...

    Nom : dev.png
Affichages : 1618
Taille : 104,8 Ko

  9. #9
    Membre habitué Avatar de MGD_Software
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 137
    Points : 139
    Points
    139
    Par défaut
    Alors là, je ne comprends plus rien...

    Je suis sûr de la version de JQuery, je l'ai téléchargé la semaine dernière. Dans le doute, j'ai fait le lien directement sur le site de JQuery (http://code.jquery.com/jquery-1.11.2.min.js). Ça ne change rien.

    Ce qui m'épate, c'est que tu dis que ça fonctionne chez toi. Mais Ce n'est pas le même code, puisque je vois sur ton imge que tu es en local. Peux tu essayer avec le code de mon site (adresse dans mon post précédent).
    Ensuite, peux-tu essayer avec MON code complet et MON fichier XML (code ci dessous, le forum n'accepte pas les pièces jointes XML)

    Chez moi, J'ai essayé avec 4 pc différents : sur les 4, même problème avec internet explorer (tous en version 11 sous Seven).
    De plus, on ne peut pas obtenir le code source de la page avec internet explorer, on n'y trouve que la première ligne de ce qui devrait être écrit sur la page.
    Sous Firefox, on récupère correctement le code de la page, y compris les scripts.

    Il semblerait que j'aie un problème (aussi ?) avec la fonction $('body').append(...), puisque IE (chez moi en tous cas) plante à cet endroit et de plus écrase le source de la page.

    D'autre part, j'observe sur ton image que sous Firefox tu as aussi des avertissements "Mal formé", indice qu'il y a quand même un problème quelque part...

    J'attends tes essais...


    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Test de lecture XML</title>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
    <script type="text/javascript">
    $(document).ready(function()
    {
        function readXML(xml) {
            $(xml).find('album').find('slide').each(function(){
                 var title = $(this).find('title').html();
                 var file = $(this).find('file').text();
                 var ratio = parseFloat($(this).find('ratio').text());
                $('body').append('Fichier : ' + file + ', Titre : ' + title + '<br>');
            });
        }
     
        $.ajax({
            url: './index.xml',
            data: null,
            success: readXML,
            dataType: 'xml'
        });
    })
    </script>
    </head>
     
    <body>
    </body>
    </html>
    ----------------------------------------------------
    <?xml version="1.0" encoding="utf-8"?>
    <album>
        <common>
            <title>Titre de l'album</title>
            <comment>Ceci est le commentaire de l'album.</comment>
            <slidesize>240</slidesize>
            <colonnes>4</colonnes>
            <legendabove>0</legendabove>
        </common>
        <styles>
            <body>
                <font-family>Verdana, Arial, Helvetica, sans-serif</font-family>
                <font-size>12px</font-size>
                <color>#000000</color>
                <background-color>#EEFFFF</background-color>
                <margin-top>0px</margin-top> 
            </body>
            <div-container>
                <margin>0 auto 0 auto</margin>
                <background-color>#FFF</background-color>
                <display>table</display>
            </div-container>
            <div-title>
                <text-align>center</text-align>
            </div-title>
            <div-comment>
                <text-align>justify</text-align>
            </div-comment>
            <class-menu_up>
                <color>blue</color>
                <background-color>cyan</background-color>
            </class-menu_up>
            <class-vignette>
                <width>250px</width>
                <border-width>1px</border-width>
                <border-style>solid</border-style>
                <border-color>#CCC</border-color>
                <margin>5px</margin>
                <float>left</float>
                <text-align>center</text-align>
            </class-vignette>
        </styles>
        <slide>
                <title>Dome &quot;1&quot;</title>
                <file>Dome1.jpg</file>
                <ratio>0.667</ratio>
        </slide>
        <slide>
                <title>Dome 2</title>
                <file>Dome2.jpg</file>
                <ratio>1.5</ratio>
        </slide>
        <slide>
                <title>Dome 4</title>
                <file>Dome4.jpg</file>
                <ratio>0.667</ratio>
        </slide>
        <slide>
                <title>Plage 1</title>
                <file>Plage1.jpg</file>
                <ratio>1.5</ratio>
        </slide>
        <slide>
                <title>Plage 2</title>
                <file>Plage2.jpg</file>
                <ratio>1.5</ratio>
        </slide>
        <slide>
                <title>Route de Thera</title>
                <file>RouteThera.jpg</file>
                <ratio>1.5</ratio>
        </slide>
        <slide>
                <title>Rue à Naousa (Paros)</title>
                <file>Rue1.jpg</file>
                <ratio>0.667</ratio>
        </slide>
        <slide>
                <title>Rue à Fira (Santorin)</title>
                <file>Rue2.jpg</file>
                <ratio>0.667</ratio>
        </slide>
        <slide>
                <title>Rue à Pyrgos (Santorin)</title>
                <file>Rue3.jpg</file>
                <ratio>0.667</ratio>
        </slide>
    </album>

  10. #10
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2006
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2006
    Messages : 226
    Points : 532
    Points
    532
    Par défaut
    salut,

    la page est introuvable sur ton serveur.

    par contre, je viens de voir que je testais avec un jquery 2.1.3...

  11. #11
    Membre habitué Avatar de MGD_Software
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 137
    Points : 139
    Points
    139
    Par défaut
    Salut,

    Bon, j'ai peut-être fait une erreur sur le lien car je l'ai tapé à la main.
    Je recommence avec cette fois un copier-coller : http://mgd.zz.mu/albums/album1/test.htm
    Je l'ai testé en prévisualisation, il fonctionne.

    D'autre part je ne souhaite pas utiliser JQuery 2.x car ce dernier est incompatible avec les versions de IE inférieures à 9. Or j'ai encore pas mal d'abonnés qui sont sous XP, et donc condamnés à rester avec IE8. On a beau leur dire d'utiliser Firefox ou Chrome, il n'en font qu'à leur tête. Mais je me dois de réaliser des sites qui fonctionnent, même pour les têtus.

    J'aimerais quand même bien savoir si mon code avec JQuery 1.11 fonctionne chez toi...

    Sinon j'appliquerai la méthode brutale : essaie l'adresse suivante avec IE : http://mgd.zz.mu/albums/album1/index.htm

  12. #12
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Même si l'objet jQuery existe, il peut être vide !

    Exemple :

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        var jObj = $( "body" ).find( ".inexistante" );
     
        console.log( jObj ); // object
        console.log( jObj[0] ); // undefined
     
        // il faut tester le résultat de la sélection avant de l'utiliser
        // soit : if( jObj[ 0 ] ){ ... }
        // soit : if ( jObj.length > 0 ){ ... }

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  13. #13
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2006
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2006
    Messages : 226
    Points : 532
    Points
    532
    Par défaut
    Citation Envoyé par MGD_Software Voir le message
    J'aimerais quand même bien savoir si mon code avec JQuery 1.11 fonctionne chez toi...
    non, et c'est pour ça qu'on ne se comprenait pas. mais bon, ça te donne une piste pour essayer de patcher jquery 1.11.

    mais sinon, t'es obligé d'avoir du xml ? tu peux pas avoir ton fichier en json, ça serait plus simple non ?

  14. #14
    Membre habitué Avatar de MGD_Software
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 137
    Points : 139
    Points
    139
    Par défaut
    Citation Envoyé par danielhagnoul Voir le message
    Même si l'objet jQuery existe, il peut être vide !
    Bien sur, mais ce n'est pas le cas puisque cela fonctionne sous Firefox...
    Et si sous IE on obtient un objet vide, c'est bien un problème de JQuery sous IE qui n'interprète pas correctement le XML.

  15. #15
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    ce ne serait pas un problème avec la blase <body> dans ton xml ?
    tu peux changer de balise ? => <mybody>
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  16. #16
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Citation Envoyé par MGD_Software Voir le message
    Bien sur, mais ce n'est pas le cas puisque cela fonctionne sous Firefox...
    Et si sous IE on obtient un objet vide, c'est bien un problème de JQuery sous IE qui n'interprète pas correctement le XML.
    Désolé, je n'ai pas lu toute la discussion.

    Vous avez testé cette solution : http://www.crashcoder.com/read-xml-u...ot-work-in-ie/

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  17. #17
    Membre habitué Avatar de MGD_Software
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 137
    Points : 139
    Points
    139
    Par défaut
    Citation Envoyé par kakashi99 Voir le message
    non, et c'est pour ça qu'on ne se comprenait pas. mais bon, ça te donne une piste pour essayer de patcher jquery 1.11.

    mais sinon, t'es obligé d'avoir du xml ? tu peux pas avoir ton fichier en json, ça serait plus simple non ?
    Plutot que patcher JQuery je vais passer en version 2, et tant pis pour les têtus.
    Quant au fichier XML, il est généré par une application Visual Basic qui est aussi utilisée à d'autres fins. Je ne peux donc pas modifier le format de sortie.
    Je pourrais reproduire l'appli spécifiquement pour ma galerie, mais replonger dans du code VB6 écrit il y a plusieurs années me rebute quelque peu.
    D'autant plus que l'environnement de développement VB6 ne fonctionne plus sous Windows 7 et que je suis obligé de développer avec l'émulateur XP Mode, ce qui n'est pas du tout pratique.
    Et refaire toute l'appli en VB.Net sort complètement du cadre du projet.

    Je vais déjà voir si ça fonctionne avec JQuery 2, sinon il faudra bien que que je refasse un peu de VB6. Je pourrais effectivement faire une extension à l'appli, mais j'avoue que je connais mal le format Json en profondeur, ne m'en servant qu'en ajax avec un simple eval (le php cible d'ajax utilise la bibliothèque json.php dans laquelle je n'ai pas eu le temp d'entrer en détail).

    Mais si je trouve un bon tuto, ce sera peut-être la solution finale (expression désagréable très utilisée en cette période d'anniversaire ).

    PS: pour mieux comprendre le principe de la galerie, voir la page de l'appli actuelle, qui fonctionne avec un site PHP. Le but de la présente galerie est de s'affranchir du PHP pour rendre les albums indépendants d'un serveur et pouvoir être visualisés sur un support local (CD, clé USB, ...)

    http://mgd.software.free.fr/download.../WebAlbums.php

  18. #18
    Membre habitué Avatar de MGD_Software
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 137
    Points : 139
    Points
    139
    Par défaut
    Citation Envoyé par danielhagnoul Voir le message
    Voilà qui me rassure beaucoup. Je ne suis pas le seul à avoir des problèmes, il semble bien y avoir (encore!) un problème avec un produit Microsoft.

    Je vais tester la fonction. Ce qui me gêne un peu, c'est qu'on utilise un activeX. J'ose espérer que cet objet existe sur TOUTES les versions de Windows et TOUTES les versions d'IE.
    De plus, comme dit dans mon post précédent, la galerie doit pouvoir fonctionner en local, sans connexion internet (et bien sur sans serveur installé sur la machine). Il est donc exclu d'aller pêcher dynamiquement un objet sur le web au chargement.
    C'est d'ailleurs pour ça que dans le code initial, j'utilise une copie locale de jquery.min.js et non un lien vers le site de Jquery.

    Je donnerai le résultat du test dès que possible.

  19. #19
    Membre habitué Avatar de MGD_Software
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 137
    Points : 139
    Points
    139
    Par défaut
    Bon, après avoir galéré avec toutes les versions de JQuery et d'IE (y compris l'astuce signalée par danielhagnoul ), j'ai craqué et abandonné définitivement XML.
    Après avoir également galéré pour créer "a la mano" un fichier JSON correct, j’avais toujours des problèmes avec IE, et des avertissements "Mal formé" de Firefox.

    Comme de toutes façons il va falloir que je modifie mon appli Windows, autant faire simple : j'écris directement une variable tableau dans un fichier .js, que je lie à ma page et que j’exploite dans le code de la page. Ça donne ça:
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    // Données de mise en page de l'album
    var data=
    {
        'common':
            {
                'title':'Titre de l\'album',
                'comment':'Ceci est le commentaire de l\'album.',
                'slidesize':240,
                'colonnes':4,
                'legendabove':false
            },
        'styles':    {
            'body':
                {
                    'font-family':'Verdana, Arial, Helvetica, sans-serif',
                    'font-size':'12px',
                    'color':'#000000',
                    'background-color':'#EEFFFF',
                    'margin-top':'0px'
                },
            'div-container':
                {
                    'margin':'0 auto 0 auto',
                    'background-color':'#FFF',
                    'display':'table'
                },
            'div-title':
                {
                    'text-align':'center'
                },
            'div-comment':
                {
                    'text-align':'justify'
                },
            'class-menu_up':
                {
                    'color':'blue',
                    'background-color':'cyan'
                },
            'class-vignette':
                {
                    'width':'250px',
                    'border-width':'1px',
                    'border-style':'solid',
                    'border-color':'#CCC',
                    'margin':'5px',
                    'float':'left',
                    'text-align':'center'
                }
        },
        'slides':
        [
            {'file':'Dome1','title':'Dome "1"','ratio':0.667},
            {'file':'Dome2','title':'Dome 2','ratio':1.5},
            {'file':'Dome4','title':'Dome 4','ratio':0.667},
            {'file':'Plage1','title':'Plage 1','ratio':1.5},
            {'file':'Plage2','title':'Plage 2','ratio':1.5},
            {'file':'RouteThera','title':'Route de Thera','ratio':1.5},
            {'file':'Rue1','title':'Rue à Naousa (Paros)','ratio':0.667},
            {'file':'Rue2','title':'Rue à Fira (Santorin)','ratio':0.667},
            {'file':'Rue3','title':'Rue à Pyrgos (Santorin)','ratio':0.667}
        ]
    }
    C'est clair, c'est pur, c'est éventuellement facilement modifiable à la main si on veut éviter de relancer l'appli Windows (ou si on ne l'a pas sous la main). On peut même se passer de l'appli si on connait la structure des répertoires, et qu'on sait se servir d'un client FTP, en créant le fichier de paramètres à la main et en envoyant les fichiers et les images à la bonne taille dans le bon répertoire.

    Ça marche très bien sur tous les navigateurs (enfin ceux qui connaissent les CSS 2, ce qui remonte quand même à assez loin). En tous cas, pas de problème sous XP avec IE8 (j'ai pas pu tester avec IE6, natif à l'installation de XP), et même sans serveur (IE crie un peu quand on lui demande de lire un fichier HTML sur un réseau local, mais ça marche quand même après une adaptation des paramètres de sécurité).

    Je vais faire la même chose pour la collection (niveau au-dessus des albums, qui en fait l'index).
    Je clôturerai cette discussion quand j'aurai modifié et mis en ligne la nouvelle version de WebAlbums, qui génère automatiquement tous les fichiers nécessaires à cette galerie.

    Si vous avez le fin mot de l'histoire, à savoir pourquoi la lecture de mon fichier XML plante IE et renvoie "mal formé" sous Firefox, faites moi un MP.
    Pour le moment, je reste frustré.

  20. #20
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    heu et la balise body ? (cf mon intervention au dessus ...)
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

Discussions similaires

  1. Lecture d'un fichier XML avec JQuery
    Par MGD_Software dans le forum XML/XSL et SOAP
    Réponses: 0
    Dernier message: 23/01/2015, 20h44
  2. lecture d'un fichier xml avec jquery
    Par devkoax dans le forum jQuery
    Réponses: 6
    Dernier message: 24/10/2011, 21h15
  3. Lecture d'un fichier XML avec Xpath
    Par jmjmjm dans le forum C#
    Réponses: 4
    Dernier message: 27/10/2009, 14h16
  4. [JDOM] Exception pendant la lecture d'un fichier XML avec JDOM
    Par 0coco0 dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 20/03/2009, 11h21
  5. Problème lors de la lecture d'un fichier xml avec XMLBeans
    Par oscar78 dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 07/09/2007, 14h04

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