2014-02-05 5 views
1

기본적으로 MVC 컨트롤러를 호출하고 쿼리 결과를 JSON 형식으로 반환합니다.jQuery에서 JSON 배열의 항목을 파싱하는 방법은 무엇입니까?

내가하고 싶은 것은 내 쿼리에서 "LeaseName"라는 값을 꺼내입니다

<script> 
    $("#APINumber").focusout(function() { 
     $.getJSON('@Url.Action("CheckAPI", "WellInfo")', { APINumber: $(this).val() }, function (data) { 
      if (!data.isDuplicate) { 
       toastr.error('API Number does not exist in the database. Please check your API Number.', 'API Number Error') 
       $("#APINumber").val("") 
      } 
      var id = JSON.stringify(data.list); 

      $.each(data.list, function (value) { 
       viewModel.LeaseName(JSON.stringify(data.list[value])); 
      }); 


     }); 

    }); 
. $ .each 루프를 사용하여 구문 분석을 시도했지만 textbox는 으로 작성했습니다. viewModel.LeaseName (JSON.stringify (data.list [value]));은 전체 JSON 문자열을 표시합니다! 아래를보십시오, 이것이 내가 얻는 것입니다.

{"WellKey":221622,"OperatorKey":21,"LeaseKey":519,"APINumber":"03048374","FormattedAPINumber":"030-48374","RedrillCancelFlag":" ","WellDesignation":"518G1-34","FieldCode":"052","FieldAreaCode":"05200","FieldName":"Belridge, South","AreaCode":"00","AreaName":"Any Area","DistrictNumber":"4","CACountyCode":"030","CountyName":"Kern","LeaseName":"","WellNumber":"518G1-34","IsActive":1,"WellTypeCodeList":"","WellStatusCode":"A","WellStatusDate":"/Date(1342814313397)/","BLMInterestCode":"N","OperatorName":"Aera Energy LLC","OperatorCode":"A0610","IsCurrentActive":true,"Section":34,"Township":"28S","Range":"21E","BaseMeridian":"MD","IsBLMInterest":false,"IsEPAWell":false,"BaseOfFreshWater":"","AssignedEngineerID":-1,"IsHydraulicallyFractured":true,"AbandonedStandardStatusCode":"Not Abandoned","DirectionalStatusCode":"Directionally drilled","LocationDescription":"Fr SW cor 582 N 405 E","Elevation":"592 KB","IsDryHole":false,"Version":4,"Well2Version":3} 

은 내가 그냥 JSON 데이터에서 하나의 값을 표시하려면, 내 텍스트 상자에서이 전체를 돼요.

어떤 도움이 굉장 할 것입니다 !!!!

편집

  $.each(data.list, function (value) { 
       var json = JSON.stringify(data.list[value]) 
       console.log(json["WellKey"]); 
      }); 

내가 콘솔에서 정의되지 않은 얻을 ...

편집

가 해결이

를 사용하여 시도! 루프를 사용할 필요가 없습니다. $ .getJSON을 사용하면 데이터가 이미 문자열 화됩니다. 데이터에 액세스하려면 data.list [0]을 사용하는 것이 좋습니다.

감사합니다.

+0

오브젝트 아닌 문자열 화 (stringification)가 data.list에 위치한인가요 :이 바이올린을 살펴 경우,이 같은 방식으로 값과 만 WellKey를 출력

는 값을 가지고 [값]? – MaxPRafferty

답변

1

을한다고 가정

http://jsfiddle.net/5BhWr/

그러나, LeaseName이 반환 된 JSON에서 가치가없는 점에 유의하시기 바랍니다. 당신이 getJson 호출 내에으로

data["LeaseName"] 

data 변수가 이미 JSON 될 것입니다 :

업데이트

은 당신의 코드를 보면 나는이 출력됩니다 당신의 값이 있다고 생각합니다.

http://jsfiddle.net/5BhWr/2/

+0

그 이유는 위대한 접근 방식이지만, 내 콘솔 창에서 "정의되지 않은"상태로 돌아 오는 중입니다. – Snelson

+0

바이올린을 보았습니까? 나 한테 줘, 내가 한번 보자. – hutchonoid

+0

이 바이올린을 실행하면 json .. div의 WellKey 출력을 볼 수 있습니다 .http : //jsfiddle.net/5BhWr/1/ – hutchonoid

1

당신이 쓴 것에서는 너무 많은 문자열이있는 것으로 보입니다.

json["LeaseName"] 

참조 jsFiddle :

{"WellKey":221622,"OperatorKey":21,"LeaseKey":519,...} 

data.list[value] 

의 값이 다음 단순히 당신은 단순히 필요

viewModel.LeaseName(data.list[value].LeaseName); 
+0

이상한 점은 data.list [value] .LeaseName ... .LeaseName 부분을 선택하려고해도 옵션리스트에 나타나지 않는다는 것입니다. – Snelson

+0

답과 허치 오드의 콤보를 사용하여 console.log (data.list [0]. FieldName)를 찾았습니다. 루프 또는 strigifying에 대한 필요가 없습니다. 감사! – Snelson

관련 문제