2015-02-04 8 views
0

PHP ajax 호출에서 반환되는 JSON 배열이 있습니다. 루프를 통해 모든 정보를 표시해야합니다. 방법이 작동하지 않는 것 같습니다. PHP에서는 foreach key => value를 사용하는 데 익숙합니다.하지만 여기에는 옵션이없는 것으로 보입니다.Javascript에서 JSON 배열을 반복합니다.

내 배열은

[{"Type":"Person","Durable":"Durable","Url":"test.com"}, 
{"Type":"Person","Durable":"Durable","Url":"test2.com"}, 
{"Type":"Person","Durable":"Durable","Url":"test3.com"}, 
{"Type":"Person","Durable":"Durable","Url":"test4.com"}, 
{"Type":"Location","Durable":"Durable","Url":"test5.com"}, 
{"Type":"Phone","Durable":"Durable","Url":"test6.com"}] 

배열의 길이는 항상 6 항목 때마다 변경됩니다. 그리고 루프가 내 성공 처리기로 이동합니다. 데이터에 액세스하는 방법에 대한 도움이 필요합니다.

success: function(data){ 

} 
+1

'에 대한 (데이터 VAR i)를 {...}'작동합니다. 당신은'data [i]'로 배열 항목을 참조 할 것입니다. –

+0

저는 그것이 다른 곳의 모든 곳에서 다른 방법으로 미친 양이 있다는 것을 알았습니다. 아무 것도 할 수 없었습니다. – workingxx

답변

1

당신은 간단한 루프 문을 사용할 수 있습니다

success: function(data){ 
    var i, l; 
    for (i = 0, l = data.length; i < l; i++) { 
     // access the object: data[i] 
     console.log(data[i]); 
    } 
    } 

이 가장 effiecient 방법입니다.

+0

* 이것은 가장 효과적인 방법입니다. 에 무슨? – LcSalazar

+0

그리고 왜 for 루프에서 두 변수를 사용합니까? – LcSalazar

+0

'l'은 한 번만 정의됩니다. 만약 당신이 evaulation과 함께'data.length'와 같은 것을하면, 매번 계산됩니다. –

0

할 수 있습니다 배열을 통해 단지 루프 :

success: function(data){ 
    for (var i = 0; i < data.length; i++) { 
    var obj = data[i]; 
    var type = obj.Type; 
    var durable = obj.Durable; 
    var url = obj.Url; 
    // do work 
    } 
} 
-1

당신은 배열 프로토 타입 forEach 사용할 수 있습니다

data.forEach(function(item) { 
    var type = item["Type"]; 
    var durable = item["Durable"]; 
    /*...*/ 
}); 
+0

downvoter는 설명하기 위하여 걱정 하는가? – LcSalazar

+0

'forEach'는 IE8과 같은 일부 오래된 브라우저에서 기본적으로 지원되지 않습니다 –

+0

이것은 내가 원하는 방식으로 데이터에 액세스해야하는 것입니다. 정말 고마워요! – workingxx

관련 문제