Fonction .text()

Qui refuse d'être utilisée pour une variable...

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Salut les zesteux,

J'ai un soucis avec JQuery et Ajax. Je lis un fichier xml avec une requête Ajax (grâce à JQuery). Je le parcours, tout fonctionne bien, sauf que j'essaye de récupérer les valeurs de mes balises notes avec la fonction .text(). Dans mes console.log(), ça fonctionne correctement, mais quand je l'utilise pour l'affecter à une variable, rien ne se passe…

Quelqu'un saurait comment régler ce soucis svp ?

Voilà le code :

 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
// Test de la lecture de fichiers xml

$(function() {
    var xmlurl = "test-musique.xml";
    var notesLeft = new Array();
    var notesRight = new Array();
    var notesUp = new Array();
    var notesDown = new Array();
    $.ajax({
        type : "GET",
        url : xmlurl,
        dataType : "xml",
        success : function(xml)
            {
            //*
                $(xml).find('music').each(function()
                    {
                        var name = $(this).attr('name');
                        var scene = $(this).attr('scene');
                        document.getElementById('num_1').innerHTML = "Nom de la musique : " + name + ". Type de scene : " + scene;
                    });
            //*/
            //* 
                $(xml).find('notes-left').each(function()
                    {
                        var hour;
                        $(this).find('note').each(function()
                            {
                                console.log("Gauche" + $(this).text());
                                hour = $(this).text();
                                notesLeft[1] = hour;
                            });
                    });
            //*/
            //*
                $(xml).find('notes-right').each(function()
                    {
                        $(this).find('note').each(function()
                            {
                                console.log("Droite" + $(this).text());
                                notesRight.push($(this).text());
                            });
                    });
            //*/
            }
        });
    document.getElementById('click').innerHTML = "Gauche : " + notesLeft[1] + "   Droite : " + notesRight[1];
});

La vie, c'est comme les mirabelles

+0 -0
Staff

Déjà tu mélanges JS vanille et jQuery, c'est une bonne façon de faire des erreurs.

Ensuite ligne 26 tu crées ta variable que tu écrases ligne 30 : ligne 31 elle aura donc à chaque fois une nouvelle valeur mais ça restera le même pointeur, tu n'auras donc que la dernière valeur attribuée d'accessible.

Édité par viki53

Auteur du sujet

Yep, je suis censé avoir la dernière valeur d'accessible (à la base, c'était légèrement différent, j'ai modifié comme ça juste pour tester). Mais il se trouve que je n'ai rien, pas la moindre valeur. Et c'est pareil à la ligne 41, ça ne fonctionne pas. Quand j'affiche les tableaux, j'ai 2 jolis undefined.

Pour ce qui est de JS Vanille et JQuery, j'ai jamais entendu parler de JS Vanille, j'ai juste suivi un tuto pour réussir à lire mon xml, et j'ai pas la moindre idée de si c'est bien fait ou non. Mon niveau en JS est assez limité, j'ai juste suivi mes cours d'ISN, et c'était pas glorieux…

La vie, c'est comme les mirabelles

+0 -0
Staff

Cette réponse a aidé l'auteur du sujet

Ah oui mais tu les affiches ligne 47 tes infos, non ?

Sachant que ta requête AJAX est asynchrone c'est pas une bonne idée : la fonction success est appelée au retour de la requête, alors que ta ligne 47 est exécutée de manière synchrone, juste après le début (ouverture) de la requête ;)

Déplace juste ta ligne 47 ligne 44 (à la place des commentaires) et ça ira mieux ;)

Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte