2010-07-29 7 views
-1

J'utilise ce tableau (comme exemple)
http://pastebin.com/M0ZJgAVsl'accès aux données JSON

J'utilise json_encode() sur elle et aller chercher à l'aide de javascript

ne se soucie de personne pour me dire

pour obtenir les lignes num je voudrais simplement utiliser

var numrows = json['numrows']; 

et boucle sur chaque ligne woul d-je utiliser

for(row in json['rows']) { 
} 

puis à l'intérieur que pour obtenir à chaque point de données serait-je utiliser

for(data in row) { 

} 

ou suis-je complètement hors piste?

+0

Avez-vous essayé? ;) –

Répondre

0

Si vous recevez les données désérialisés JSON dans le JavaScript comme un objet json, le code pourrait ressemble suivant

var rows = json.rows; // cache json.rows array in a variable for better performance 
for (var iRow=0, cRows = rows.length; iRow<cRows; iRow++) { 
    var row = rows[iRow]; 
    for (var iData=0, cData = row.length; iData<cData; iData++) { 
     var data = row[iData]; 
     // do something with the data like 
     // alert(data); 
    } 
} 

En général, vous recevez généralement des données JSON sous forme désérialisé comme un objet (si vous utilisez jQuery.ajax par exemple). Donc l'accès aux données en JavaScript est très simple. Il s'agit simplement d'accéder aux champs de l'objet ou d'accéder aux éléments du tableau. Pour des raisons de performances, il est préférable d'utiliser toujours une boucle indexée comme boucle "for in" (voir http://www.jslint.com/lint.html#forin). Si vous accédez à une propriété d'un objet (comme la propriété rows), il est toujours préférable d'utiliser la notation pointée (json.rows) comme notation d'index (json[rows]). Et la dernière recommandation est la mise en cache de la valeur de la propriété dans une variable locale (comme var row=rows[iRow] ou var cRows = rows.length) toujours si vous accédez à la propriété plus comme une seule fois.

Vous pouvez trouver des informations intéressantes de http://jquery-howto.blogspot.com/2009/06/javascript-for-loop-vs-jquery-each.html sur la façon la plus efficace d'énumérer des données dans le tableau (lire aussi la dernière version de la boucle suggérée dans le commentaire).

C'est également une bonne idée de vérifier votre code JavaScript dans JSLint (voir http://www.jslint.com/).

+0

Donc, vous dites que si jquery $ .ajax est valide json retour, il le convertit en un objet? – Hailwood

0

Oui, vous êtes au bon endroit.

for(row in json['rows']) { 
    for(data in row) { 
    document.write(data); 
    } 
} 
0
for(row in json['rows']) { 
    for(entry in json['rows'][row]) { 
    document.write(json['rows'][row][entry]); 
    } 
}