2013-05-19 200 views
1

Hy all,我有訪問JSON對象的值的問題。訪問JSON對象的值

首先我做json_encode($something)其中「something」是查詢到DB的結果。 (正好3行)。然後在.js文件我沒有以下內容:var data = ?php echo $something; ?>;

我的螢火和數據測試的(我將顯示1行):

[Object {x="something1", y="something2", z="10", w="20"}, ...] so i get Array of objects. 

現在我需要訪問這些值,但我不知道他們的名字,也沒有他們的數量,所以我不能使用這樣的東西,如console.log(data[0].x)哪些工作正常,輸出是「東西1」;

當我嘗試一點更通用的方法來做到這一點,如:

for(var i=0; i<data.length; i++) { 
    for(var prop in data[i]) { 
     if(data[i].hasOwnProperty(prop)) 
     console.log(data[i].prop);     
    } 
} 

我得到的每一個值「未定義」。 如何解決這個問題。謝謝。

+0

http://json.org//http://www.ecma-international.org/publications/standards/ ecma-262.htm – hakre

回答

1

我認爲這裏的問題是,因爲這條線的

的console.log(數據[I] );

點符號的東陽,它希望對象有支撐鍵而不是value of prop

試試這個(使用括號符號代替)

console.log(data[i][prop]); 
// This make sure that it will first fetch the value 
//of propertyName and then search for the key on it 

括號符號允許訪問包含特殊字符和使用變量選擇屬性的屬性

Check Fiddle

+0

只是我的錯誤複製粘貼,它是(data [i] .prop)我編輯。 (結果未定義),有什麼建議? – Srle

+0

@Srle ..查看更新後的文章 –

+0

大聲笑,謝謝它的作品像一個魅力,我忘了用[]符號嘗試。 – Srle

0

你可以像這樣簡化循環:

<html> 
<script> 
var a = "[ {'x':'something1', 'y':'something2', 'z':'10', 'w':'20'}, {'a':'somethingA',   'b':'somethingB', 'c':'1', 'd':'2'}]"; 
var data = eval('(' + a + ')'); 
for(var i in data) { 
for(var prop in data[i]) { 
     console.log(data[i][prop]);     
    } 
} 
</script> 
</html>