Autant pour moi, le format de ton objet c'est un tableau contenant pour chaque élément un objet avec tous les attributs.
Du coup pour accéder au nom, il faut préciser de quelle personne...
par ex :Code:window.alert(resParsed[0].Nom);
Version imprimable
Autant pour moi, le format de ton objet c'est un tableau contenant pour chaque élément un objet avec tous les attributs.
Du coup pour accéder au nom, il faut préciser de quelle personne...
par ex :Code:window.alert(resParsed[0].Nom);
Voilà, c'est l'idée. Il faut repérer les différents éléments de la structure JSON. Sous les dernières versions de Firefox il y a une ardoise JavaScript (Maj+F4) dans laquelle il y a un bouton « Formater et indenter ». Si tu l'utilises sur ton code JSON, voilà ce que ça donne :
Ainsi on voit bien les différents niveaux de la structure.Code:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
- niveau 0 = l'objet entier resParsed => tableau [ ... ]
- niveau 1 = par exemple resParsed[0] => objet { ... }
- niveau 2 = les propriétés des objets, par exemple resParsed[0].Nom. Il y a aussi la syntaxe resParsed[0]['Nom'] qui est équivalente.
J'utilise le code suivant pour récupérer les données au format JSON.
Ce code m'a servi pour tester la récupération des données mais maintenant il faut que je l'inclue dans le code de mon premier post à la place des données statiques. Mais comment faire ? Il y a certainement des choses à enlever.....Code:
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
Merci d'avance....
bah oui, tout ça :
wtf xOCode:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Il y a deux choses à changer principalement :
- Il n'y a plus de variable globale tMarkers
- Il faut récupérer les données dans la fonction initialize avant de les passer à setMarkers
Tu as déjà tous les éléments en main, il ne te reste qu'à assembler les morceaux. Pour te guider un peu, sache juste qu'il faudra que tu appelles setMarker dans la fonction onreadystatechange.
Pour aller plus loin, voici un conseil pour t'aider à organiser ton code. La grande majorité des librairies JavaScript proposent une fonction utilitaire pour prendre en charge Ajax, et ainsi éviter de réécrire 15 fois les mêmes lignes de code (instancier req, tester req.readyState et req.status, etc.). Dans ton cas, tu as juste besoin du plus simple : une requête GET sans paramètres. Tu peux écrire une fonction qui prend en paramètres une URL et une fonction de callback (en français fonction de rappel), c'est-à-dire une fonction qui sera appelée quand la requête est terminée.
Et voici un exemple de la façon de s'en servir :Code:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Code:
2
3
4
Bonjour,
J'ai modifié le code du premier post de la manière suivante :Code:
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
121
122
123
124
125
126
127
128
129
130
131
132
133
J'ai vérifié que les données étaient bien recupérées, la carte s'affiche correctement mais pas les points. Est ce qu'il faut que je modifie la fonction SetMarkers. Je pense que oui mais comment récupérer les données dans cette fonction pour les afficher ? Il doit me manquer quelquechose ?
Rassure-toi il ne manque rien à la fonction setMarkers. Simplement, tu t'es fait avoir par l'aspect asynchrone d'Ajax. C'est normal, tout le monde se fait avoir au début.
Ça c'est ton code actuel :
Voilà ce qui se passe : quand le script appelle la fonction ajaxGet, ça lance une requête Ajax, qui va vivre sa vie de son côté. Le script continue son exécution immédiatement ! Donc la fonction setMarkers est appelée avant que la réponse n'ait eu le temps d'arriver.Code:
2
3
4
5
6
7
8
9
10
En plus, tu as un problème de portée : la variable tMarker est déclarée avec var dans le contexte de la fonction callback. Donc en dehors de cette fonction, elle n'est pas définie.
Pour que ça marche il suffit de faire comme ça :
Code:
2
3
4
J'ai effectué la modifications et tout fonctionne correctement, j'affiche sur ma carte les points avec les données issues de la base MySQL.
Je voudrais donc vous remercier pour l'ensemble de l'aide que vous m'avez apporté. Vous avez pris le temps de m'expliquer étapes par étapes ce qu'il fallait faire tout en me laissant chercher de mon côté.
Sympa de votre part....Bonne continuation.
Attendu que tu charges jQuery, tu aurais pu tirer avantage à t'en servir au mieux, voir jQuery.ajax().
Juste une remarque, j'aime bien cette ligne :mrgreen:
Code:var contentInfoWindow = ['<div id="InfoText">', '<div class ="tabs">', '<ul>', '<li><a href="#tab1">General</a></li>','<li><a href="#tab2">Configuration</a></li>','<li><a href="#tab3" id="SV">Street View</a></li>', '</ul>', '<div id="tab1">', '<h3><font color=\"#8A40A4\">' + nom + '</font></h3>', '<p>' + locNr + '<BR>' + city + '<BR>' + land + '<BR><BR>Téléphone fixe : ' + fixe + '<BR>Téléphone portable : ' + portable + '</p>', '</div>', '<div id="tab2">', '<p><font color=\"#8A40A4\">Informatique : </font>' + informatique + '<BR>Système d\'exploitation : ' + exploitation + '<BR>Connexion Internet : ' + internet + '<BR>Opérateur Télécoms : ' + telecoms + '<BR>Téléphonie : ' + telephonie + '<BR>Nbre de postes téléphoniques : ' + poste + '<BR>TV sur ADSL : ' + tvadsl + '<BR>CanalSat : ' + canalsat + '<BR>Home Cinéma : ' + home + '<BR>Lecteur DVD : ' + lecteur + '<BR>Système de vidéosurveillance : ' + videosurveillance + '<BR>Détecteur de fumée : ' + detecteur + '<BR>Radio Numérique : ' + radio + '</p>', '</div>', '<div id="tab3">', '<div id="pano"></div>', '</div>'].join('');
Re,
je pense que tu vas pouvoir également fermer cette discussion Insérer streetview dans une infobulle.
Merci.