2013-05-19 5 views
1

Hy 전부, JSON 객체에서 값에 액세스 할 때 문제가 있습니다.JSON 객체의 값에 액세스

첫 번째는 json_encode($something)입니다. 여기서 "something"은 DB에 대한 쿼리 결과입니다. (정확히 3 행). 다음의 .js에 내가 다음 않았다 : 내가 불을 지르고 및 데이터 테스트 var data = ?php echo $something; ?>;

됩니다 (i가 1 개 행을 표시합니다) :

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

지금 내가이 값에 액세스해야하지만 난 그들의 이름을 알 수 없습니다도 그들의 카운트, 그래서 같은 일을 사용할 수 없다 console.log(data[0].x) 잘 작동하고 "something1"출력;

내가 좀 더 일반적인 방법을 시도

이 같은 작업을 수행합니다 :
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

I 여기서 문제는이 광고의 생각

CONSOLE.LOG (데이터 [I] 소품.); 점 표기법의

Beacause은, 그것은 개체가 이 대신 (대신 사용 브래킷 표기법)

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 

광장 브래킷을 시도 키 아닌 value of prop

소품이 기대 표기법을 사용하면 특수 문자가 포함 된 속성에 액세스하고 변수를 사용하여 속성을 선택할 수 있습니다.

Check Fiddle

+0

복사 - 붙여 넣기에서의 실수. 편집 한 (data [i] .prop)입니다. (결과가 정의되지 않음), 제안 사항이 있습니까? – Srle

+0

@Srle .. 업데이트 된 게시물 확인 –

+0

Lol, 감사합니다. 매력처럼 작동합니다. [] 표기법을 사용하는 것을 잊어 버립니다. – 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> 
관련 문제