11540 sujets

JavaScript, DOM et API Web HTML5

Bonjour

J'ai ceci :

[{"date_rencontre":"2013-09-01","Stade":"STADE MUNICIPAL 1","terrain_rencontre":null,"lieu_rencontre":"1 Route des Champagneres","ville_rencontre":"16200 JARNAC","distance_rencontre":"22","nom_locaux_rencontre":"Jarnac Sports","num_locaux_rencontre":null,"nom_visiteurs_rencontre":"Avenir De Matha","num_visiteurs_rencontre":null,"niveau_rencontre":"COUPE DE FRANCE","tour_rencontre":"2","fonction_rencontre":"Arbitre assistant 2"}]


avec ceci je récupère les valeurs (enfin, une ..)

		texte=file('http://localhost/football2/sallesDesMachines/synchro.inc.php?NumeroRencontre='+escape(numero));
		file(texte);
		
			if(texte != ''){
  				myJsonObj = JSON.parse(texte);
			}
			var taillemyJsonObj = myJsonObj.length;
			
			for (var i = 0; i < taillemyJsonObj; i++) {
					alert(myJsonObj[i].Stade)
			}


Comment puis-je récupérer les clefs, c'est à dire avoir Stade, plutôt que STADE MUNICIPAL. Merci[/i]
Modifié par ledisciple1 (05 Oct 2013 - 16:18)
Excellente question !

Essaye ce killer bout de code trouvé ici :
var jsonData = [{"date_rencontre":"2013-09-01","Stade":"STADE MUNICIPAL 1","terrain_rencontre":null,"lieu_rencontre":"1 Route des Champagneres","ville_rencontre":"16200 JARNAC","distance_rencontre":"22","nom_locaux_rencontre":"Jarnac Sports","num_locaux_rencontre":null,"nom_visiteurs_rencontre":"Avenir De Matha","num_visiteurs_rencontre":null,"niveau_rencontre":"COUPE DE FRANCE","tour_rencontre":"2","fonction_rencontre":"Arbitre assistant 2"}];

for (var obj in jsonData) {
    if (jsonData.hasOwnProperty(obj) ) {
		for (var prop in jsonData [ obj ] ) {
			if (jsonData [ obj ].hasOwnProperty(prop) ) {
				alert(prop + ':' + jsonData [ obj ][ prop ] );
			}
		}
	}
}

Ya moyen de faire ton bonheur, je crois Smiley cligne
Modifié par petibato (05 Oct 2013 - 19:39)
Tu transformes le json en tableau javascript (fonction parse), puis tu lis le tableau grâce à for (... in...).

Ce qui doit donner un truc genre :

var json=/*ton json*/
var array = JSON.parse(json);
var key;
for(key in array)
{
    /*Ici tu recupères key qui sont les clés de ton tableau*/
}
Lothindil a écrit :
Tu transformes le json en tableau javascript (fonction parse), puis tu lis le tableau grâce à for (... in...).

Ce qui doit donner un truc genre :

var json=/*ton json*/
var array = JSON.parse(json);
var key;
for(key in array)
{
    /*Ici tu recupères key qui sont les clés de ton tableau*/
}


Ce qui me donne 0,1,2 etc etc et non 'date_rencontre' etc etc
Modifié par ledisciple1 (08 Oct 2013 - 18:07)
var json= /*ton json*/; var key='';
$.each(json,function(attr,valeur){
	jayson[attr ]=valeur;
})
for(key in jayson)
{
     alert(key);
}


key sera ta clé ^^ (ou alors je soupçonne une erreur dans ton json, genre les crochets)
Modifié par Lothindil (08 Oct 2013 - 18:54)
C'est normal que for..in te retourne les index 0, 1, 2, ...
Ce que tu parcours n'est pas un hash, mais un tableau. Il faut bien faire la différence entre les deux, en javascript ce n'est pas la même chose.

Il faut éviter for..in sur les tableaux, parce que ça ne marche pas toujours dans tous les navigateurs (IE notamment). Le code correct pour parcourir tous les clés de tous les hash du tableau serait donc :

var x = JSON.parse(...);
for (var i=0; i<x.length; i++) {
for (var j in x[ i ]) {
alert(j + ' = ' + x[ i ][j]);
}}


A cela près que certains hash doublent leurs clés d'index numériques et que certains navigateurs incluent aussi les clés qui correspondent à des méthodes (même celles que tu n'as pas toi-même définies). Tu peux, le cas échéant, filtrer avec typeof sur les clés et/ou les valeurs.


EDIT: encore ce fu****ing bug du i entre crochets
Modifié par QuentinC (09 Oct 2013 - 08:38)