2010-07-29 86 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]); 
    } 
}