2012-08-16 71 views
0

所以我必须调用一个JsonResult一个JSONjQuery和MVC .NET:动作返回JSON返回 “对象”

类:

public class Client{ 
    public int Id {get;set;} 
    public string Name {get;set;} 
} 

的动作被称为:

public JsonResult Index(int Id) 
     { 
     var a = context.Clients.ToList(); 
     return Json(a, JsonRequestBehavior.AllowGet); 
} 

这是电话

<script type="text/javascript"> 
    $(document).ready(function() { 
     var link; 
     $('a.client-list').click(function() { 
      link= $(this); 
      $.ajax({ 
       url: '/client/index?Id=4455', 
       dataType: 'json', 
       success: function (data) { 
        $.each(data, function (id, val) { 
         alert(id.toString() + ' ' + val.toString()); 
        }); 
       } 
      }); 
      return false; 
     }); 
    }); 
    </script> 

所以我的问题是,我知道它cuz它通过循环,我把在警报返回的东西。但弹出这个数值就是这个

0 [object Object] 
1 [object Object] 

我不知道为什么它不能正确读取它。查询顺便说一句的值是

1 TestCompany1 
2 TestCompany2 

我错过了什么jquery?

+0

您确定您收回的'TestCompany1'和'TestCompany2'值是字符串吗?如果它们是任何其他类型的对象(除了可以转换为字符串的对象),您的'.toString()'不会知道如何将其转换为字符串。 – 2012-08-16 21:41:44

+1

每个'val'都不是'Client'对象吗?所以也许它会是'val.Name'? – MrOBrian 2012-08-16 21:44:25

+0

好吧,Id是一个int,而Name是字符串属性。我以为我可以只传递一个IEnumerable或一个var到json,getjson会照顾它呢?没有? @MrOBrian我也试过,仍然是相同的。 – gdubs 2012-08-16 22:00:21

回答

4

更新您的$。每次像这样:

$.each(data, function (index, client) { 
    alert(client.Id + ' ' + client.Name); 
}); 

您在返回客户端类型的集合(Array)。 $.each函数将提供数组的索引以及与索引关联的数组中的项目。在这种情况下,数组中的每个项目将是客户端Object。在这里$.each的更多信息:http://api.jquery.com/jQuery.each/调试JavaScript的时候

富勒更多信息,请尝试使用控制台:

$.each(data, function (index, client) { 
    console.log(client); 
}); 

在您的浏览器(PC),只要按下F12,并选择控制台选项卡。您将能够看到更多关于Object及其属性的详细信息。

+0

哦,男人,我不知道,它的工作。非常感谢你的信息! – gdubs 2012-08-17 02:34:43