2012-02-19 60 views
3

我使用此代码访问我的服务器(MVC),这工作正常。在结果“数据”({“Id”:30,“说明”:“样品照片”,“名称”:“第一Galery”})我尝试获取属性data.Name,这只是没有返回,什么是在这个代码中的问题?Json的结果是没有什么

的JavaScript

$(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 2012-02-19 20:36:33

+1

@Jon。这是不正确的。 – gdoron 2012-02-19 20:39:12

+0

不知道JavaScript的奥秘,但你有没有尝试调用data().name而不是? – 2012-02-19 20:39:36

回答

3

当您使用post()方法而不指定预期的内容类型,data将简单地包含JSON(相对于JavaScript对象)的字符串。做alert(data)来验证。

重写后的

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

或者您可以使用$.getJSON(),但我不知道,如果你可以把它执行POST请求。

+0

谢谢,这个工作很好。 – AFetter 2012-02-19 20:54:58

2

您可以尝试将$ .post()中的dataType设置为“json”。检查[文档]中的示例。 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。 – 2012-02-19 21:10:00

1

您还可以在使用JSON.parse(result)返回JSON数据后解析JSON数据。