2011-08-16 6 views
43

webservice에서 JSON 결과를 얻으려면 다음 코드를 작성했습니다. 여기JSON 키 및 값을 얻는 방법은 무엇입니까?

function SaveUploadedDataInDB(fileName) { 
      $.ajax({ 
       type: "POST", 
       url: "SaveData.asmx/SaveFileData", 
       data: "{'FileName':'" + fileName + "'}", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function (response) { 
        var result = jQuery.parseJSON(response.d); 
        //I would like to print KEY and VALUE here.. for example 
        console.log(key+ ':' + value) 
        //Addess : D-14 and so on.. 
        } 
      }); 
     } 

는 웹 서비스의 응답입니다 : enter image description here

이 나를 키 인쇄 도와주세요 그것을 당신이 배열을 다시 받고있어처럼 보이는 값

답변

88

입니다. 항상 하나 개의 요소로 구성 위하여려고하는 경우 (예, 그것은 거의 Tomalak의 대답과 같은 일이)이 작업을 수행 할 수 있습니다 :

$.each(result[0], function(key, value){ 
    console.log(key, value); 
}); 

개 이상의 요소가있을 수 있습니다 당신이하려는 경우 당신이 둥지 $.each() 수, 그들 모두 반복 :

$.each(result, function(key, value){ 
    $.each(value, function(key, value){ 
     console.log(key, value); 
    }); 
}); 
+0

FWIW, 첫 번째 스 니펫 끝 부분에 닫는 괄호가 없습니다. – BWDesign

11
$.each(result, function(key, value) { 
    console.log(key+ ':' + value); 
}); 
+1

그러나 이것은 ** 0 : [object Object] ** – imdadhusen

+1

@imdadhusen 만 표시합니다. JS 개발자 도구/디버거를 살펴 보는 것은 좋은 생각 일 수 있습니다. ;) – Tomalak

10

첫째, 난 당신이 명시 적 $.parseJSON()를 사용하고 참조하십시오. 서버 측에서 JSON을 수동으로 직렬화하기 때문에 그럴 수 있습니다. ASP.NET will automatically JSON-serialize your method's return value 그리고 jQuery가 자동으로 비 직렬화됩니다.

당신이있어 배열의 첫 번째 항목이 같은 코드를 통해 반복 : 하나 개 이상의 항목이 있다면

var firstItem = response.d[0]; 

for(key in firstItem) { 
    console.log(key + ':' + firstItem[key]); 
} 

(이 그 스크린 샷에서 알 어렵다), 당신은 할 수 response.d 이상의 루프를 실행 한 다음이 코드를 해당 외부 루프 내부에서 사용하십시오.

관련 문제