2012-08-16 70 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