2010-07-29 139 views
-1

我使用这个数组(作为一个例子)
http://pastebin.com/M0ZJgAVs访问JSON数据

我在它使用json_encode(),并使用javascript

获取它

没有人照顾,告诉我

拿到NUM行,我会简单地使用

var numrows = json['numrows']; 

,并遍历每一行竟被 d我使用

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

,然后里面,要想让每个数据点,我会只使用

for(data in row) { 

} 

还是我完全偏离了轨道?

+0

你试过了吗? ;) – 2010-07-29 11:22:42

回答

0

如果您收到在JavaScript中的反序列化JSON数据作为一个对象json,那么代码可能看起来像以下

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); 
    } 
} 

一般您通常会收到反序列化的形式JSON数据一个对象(例如,如果使用jQuery.ajax)。所以JavaScript中的数据访问非常简单。它只是访问对象的字段或访问数组的元素。仅出于性能目的,最好始终将索引循环用作"for in"循环(请参阅http://www.jslint.com/lint.html#forin)。如果访问对象的属性(如属性rows),则最好使用虚线符号(json.rows)作为索引符号(json[rows])。最后的建议是在一个局部变量中缓存属性值(如var row=rows[iRow]或var cRows = rows.length),如果您多次访问该属性,则始终需要缓存属性值。

你可以从http://jquery-howto.blogspot.com/2009/06/javascript-for-loop-vs-jquery-each.html中找到关于枚举数组中数据的更有效方法的有趣信息(也可以阅读注释中建议循环的最后一个版本)。

在JSLint中验证您的JavaScript代码也是一个好主意(请参阅http://www.jslint.com/)。

+0

所以你说,如果jQuery $ .ajax获得有效的JSON回它将其转换为一个对象? – Hailwood 2010-07-29 13:58:06

0

是的,你是在正确的点。

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]); 
    } 
}