2012-06-29 7 views
1

jQuery에서 루핑을 시작하기 전에이 작업을 빠르게 수행 할 수 있습니까? 아니면 전체 카운트와 데이터의 응답에 별도의 그룹을 설정해야할까요 .. 말할 수있는 첫 번째 변수?총 JSON 응답 횟수 받기

일반적인 응답은 다음과 같이 보입니다 :

[ 
    {"name":"Tu\u011Frul","surname":"Topuz","message":"Hello World"} 
    ,{"name":"Tu\u011Frul","surname":"Topuz","message":"Hello World"} 
] 

을하지만 난 총 개수로 2를 반환 할 jQuery를 사용하는 것이 아니면 이런 식으로 뭔가를 할 필요가있을 것이다 (그들 모두를 통해 내가 루프 전에?)?

[ 
    {"total":"2"} 
    ,{"name":"Tu\u011Frul","surname":"Topuz","message":"Hello World"} 
    ,{"name":"Tu\u011Frul","surname":"Topuz","message":"Hello World"} 
] 

가장 효율적인 방법은 무엇입니까?

+1

변수'data' 안에 있다면'data.length'를 사용하여 길이에 항상 접근 할 수 있습니다 –

+0

그래서 응답에서 총계를 반환 할 필요가 없습니까? 보다 정교한 대답으로 답변을 게시 할 수 있습니까? –

+0

하나만 추가하면됩니다. –

답변

6

. 총액을 얻기 위해 항상 length 속성에 액세스 할 수 있습니다.

이 배열을 가지고 있으므로 json 응답을 JS 객체로 구문 분석 할 수 있다고 가정합니다. dataType: 'json'을 사용하면 자동으로 jQuery에 지시하거나 jQuery.parseJSON()을 사용하여 직접 구문 분석 할 수 있지만 dataType:'json'을 설정하거나 content-Type 헤더를 서버에서 application/json으로 설정하면 필요합니다.

그래서이

$.ajax({ 
     .... 
     dataType: 'json', 
     success(function(data){ 
     if(data){ 
      var total = data.length; 
     } 
     } 
}); 

과 같은 작업을 수행 할 수 있습니다 그래서 당신은 서버에서 다시 total count를 보낼 필요 없어요. 응답을 얻은 후 JS를 사용하여 얻을 수 있으며 $.each을 사용하여 전체 배열에 동일한 유형의 객체가 포함되어 있기 때문에 ({"total":"2"} 특수 멤버가없는 경우) 해당 응답을 쉽게 트래버스 할 수 있습니다.

참고 :length 속성은 Pure vanilla JS입니다. jQuery과 아무 관련이 없습니다.

+0

알았어, 알았다. 고맙습니다. –

1

자바 스크립트에서는 JSON (데이터 교환 표준)이 아니라 자바 스크립트 객체를 조작합니다.

당신은 일반적으로

var data = JSON.parse(mystring) 

또는 data가 JQuery와 아약스 호출의 성공 함수의 인수 있기 때문에 간단하게 사용이 객체 얻을 :

$.ajax(
     .... 
     dataType:'json', 
     success(function(data){ 
     }) 

일단 구문 분석은, 당신이해야하는 것은입니다 자바 스크립트 개체. 귀하의 경우에는

그것은 배열, 그래서 당신은 표준 조작을 수행 할 수 있습니다

당신이 (당신이 게시 한 것과) 객체의 배열을 얻고있다 디코딩 JSON 이후로
var length = data.length; 
var secondObject = data[1]; 
var firstObjectName = data[0].name; 
///etc. 
+0

음, 나는 현학적일지도 모릅니다. 그러나 json을 인코딩 형식으로 생각하지 않습니다. 나는 인코딩 형식으로 ascii, utf-8 같은 것을 고려한다. JSON은 CSV 파일과 비슷하므로 데이터 교환이 더 유용합니다. – NimChimpsky

+0

+1 추가 정보가 도움이됩니다. 감사! –