2014-02-18 5 views
1

HttpPost 요청을 보내고 있습니다. Value입니다.Json 값을 올바르게 얻는 방법?

Value이 참일 때 (s.IsComputer이 부울 인 경우) ComputerLocation div를 표시하고 싶습니다.

현재 아무 일도 일어나지 않습니다.

나는 방화범을 사용하여 디버깅하기 위해 노력하고 실제로 요청 게시물 오브젝트 Value:true를 백업하는 것이 확인,하지만 난 검사 할 때 내 result.Value, Value은 정의로 표시됩니다.

내가 뭘 잘못하고 있는지 확인해주세요.

스크립트 :

<script type='text/javascript'> 
    $(document).ready(function() { 
     $('#typeddl').on('change', function() {   
      $.ajax({ 
       type: 'POST', 
       url: '@Url.Action("GetItemTypeForm")', 
       data: { itemTypeId: $('#typeddl').val() }, 
       success: function (result) {        
         $('#ComputerLocation').toggle(result.Value === true);   
       } 
      }); 
     }); 
     $('#typeddl').trigger('change'); 
    }); 

</script> 

JSON : 조회가 IQueryable<T>

var data = (from s in db.ItemTypes.ToList() 
        where s.ItemTypeId == itemTypeId 
        select new { Value = s.IsComputer }).First(); 

은 다음과 같이 당신의 결과를 반환 반환하기 때문에

[HttpPost] 
public JsonResult GetItemTypeForm(int itemTypeId) 
     { 
      //pseudo code 
      var data = from s in db.ItemTypes.ToList() 
         where s.ItemTypeId == itemTypeId 
         select new { Value = s.IsComputer }; 

      return Json(data); 
     } 
+0

'$ .ajax'에 전달하는 객체에 속성이 누락되지 않았습니까? JSON 결과를 얻으려면 요청에'dataType : "json"을 사용해야한다고 생각합니다. – Renan

+0

데이터를 보내고받는 것처럼 보입니다 ... 해당 드롭 다운 ID (3)를 보내고 "Value"를 다시받습니다.이 이드는 기본적으로 IsComputer bool을 검사합니다. – Wizeman1986

답변

1

사용 First 방법은 하나의 결과를 얻을 수 :

return Json(new { Value = data.Value }); 
+0

원본 샘플과의 차이점은 무엇입니까? 또한 LINQ 쿼리 결과로 'Value'속성이있는 익명 개체가 있습니다. –

+1

'System.Linq.IQueryable '에 'Value'에 대한 정의가없고 'Value'형식의 첫 번째 인수를 허용하는 확장 메서드가 없습니다. System.Linq.IQueryable '을 찾을 수 있습니다 (using 지시문이나 어셈블리 참조가 누락 되었습니까?). 나는 Json (new {Value = data})을 반환하려고 시도했다. 하지만 아무런 차이가 없다. – Wizeman1986

+1

당신은 특정 것이 아닌 객체의 목록을 반환하기 때문에. 그리고 반환 된 모든 객체는 클라이언트로 전송됩니다. 그래서 그것은 객체 값 배열 –

관련 문제