2012-02-19 6 views
3

내 서버 (MVC)에 액세스하는 데이 코드를 사용하고 있습니다. "데이터"({ "ID": 30, "설명": "샘플 사진", "이름": "첫 번째 갤러리"}} 속성 데이터를 가져옵니다. 이름과이 값은 아무 것도 반환하지 않습니다. 이 코드의 문제?Json 결과가 없습니다.

자바 스크립트

$(function() { 
     $('#UserGaleries_').change(function() { 
      try { 

       if ($(this).val() == -1) { 

        $('#NameGaleriesEdit').val(''); 
        $('#DescriptionGaleriesEdit').val(''); 

       } 
       else { 
        $.post('/UserGaleries/ChangeCategorie', 
         { selectedID: $(this).val() }, 
         function (data) { 
          alert(data.Name); //Nothing 
          $('#NameGaleriesEdit').val(data.name); 
          $('#DescriptionGaleriesEdit').val('asdf'); 

         }); 
       } 
      } catch (e) { 
       alert(e); 
      } 

     }); 
    }); 

MVC

[Serializable] 
public class ResponsetModel 
{ 
    public int Id { get; set; } 
    public string Description { get; set; } 
    public string Name { get; set; } 
} 

public JsonResult ChangeCategorie(int selectedID) 
{ 
    DbLayer.UserGaleriesManager uc = new DbLayer.UserGaleriesManager(); 
    DbLayer.Models.UsersGalery cat = uc.GetGaleriesById(selectedID); 

    ResponsetModel retValue = new ResponsetModel() 
    { Id = cat.Id, Name = cat.Title, Description = cat.Description }; 

    JsonResult oView = Json(retValue, "text/plain", System.Text.Encoding.UTF8, JsonRequestBehavior.AllowGet); 
    return oView; 
} 
+0

ChangeCategories 작업 메서드에는 HttpPost 특성 – Jon

+1

@Jon이 필요합니다. 그것은 틀 렸습니다. – gdoron

+0

자바 스크립트의 신비를 모르지만 대신 data(). name을 호출 해 보았습니까? –

답변

3

이 예상되는 내용 유형을 지정하지 않고 post() 방법을 사용하면 data 단순히 것 (자바 스크립트 객체에 반대) JSON을 포함하는 문자열. 확인하려면 alert(data)하십시오.

$.ajax({ 
    url:'/UserGaleries/ChangeCategorie', 
    data:{ selectedID: $(this).val() }, 
    method:"POST", 
    dataType:"json", 
    success:function (data) { 
     alert(data.Name); 
    } 
}); 

으로 게시

재 작성 또는 당신 $.getJSON()을 사용할 수 있습니다,하지만 난 당신이 POST 요청을 수행 할 수 있는지 모르겠습니다.

+0

고마워,이 잘 작동합니다. – AFetter

2

$ .post()의 dataType을 "json"으로 설정할 수 있습니까? [documentation]에있는 예제를 확인하십시오. 1

또한 data.Name이 아닌 data.name입니다. 이 같은

뭔가 :

$.post('/UserGaleries/ChangeCategorie', 
              { selectedID: $(this).val() }, 
              function (data) { 
                            alert(data.Name); 
                            $('#NameGaleriesEdit').val(data.Name); 
                            $('#DescriptionGaleriesEdit').val('asdf'); 

              }, "json"); 

중요 권장 사항 : 사용 Firebug는 응용 프로그램 서버에서 정확한 응답이 무엇인지 확인합니다.

-1

다른 방법으로 데이터에 액세스 해보십시오. 데이터 [ "이름"] 사용

+1

나는 이것이 어떤 차이를 만들지는 모르겠다 .... data [ "Name"]와 data.Name은 dataType이 json이라면 같아야한다. –

1

JSON.parse(result)을 사용하여 반환 된 JSON 데이터를 구문 분석 할 수도 있습니다.