0

我正在尝试将 Json 数据传递给我视图中的 html 表。无论出于何种原因,我都无法让它工作。这是我的代码。我有一个“组代码”侧边栏,表格应该根据选定的组代码进行过滤。当我“警报(数据)”时,只有当我像下面这样序列化时,我才会得到我需要的数据,否则我只会得到 [objet] [Object]。另外,如果我执行 $('.xx').html(data) 它会返回数据,但以 json 格式返回,显然不是表格结构

--Controller 

[HttpPost]
    public JsonResult Index(string grpCode)
    {  
        JavaScriptSerializer serializer = new JavaScriptSerializer();
        var data = serializer.Serialize(new EmployeeDAL().EmployeeData(grpCode).employeeList);    
         return Json(data);        
    }
--View

 $('#tbl tr td').click(function () {
            var selection = $(this).text().trim();

            $.ajax({
                type: "Post",
                url: "/Home/Index/",
                dataType: "Json",
                data: { grpCode: selection },                    
                success: function (data) {                      
                    alert(data);
                    $.each(data, function (index, item) {
                        var row = $("<tr />");
                        $("<td />").text(item.First_Name).appendTo(row);
                           $("<td />").text(item.Last_Name).appendTo(row);
                           $("<td />").text(item.Work_Pager).appendTo(row);
                           $("<td />").text(item.Effective_Date).appendTo(row);                           
                        row.appendTo("table.xx");
                    });
<table class="xx">  </table>

--Sample JSon [{"Last_Name": "Brown",
    "First_Name": "Rodney" "Work_Pager": "43343"}]

我只是将那个“垃圾”表用于测试目的。当我让它工作时,真正的桌子将正常构造

4

1 回答 1

0

JsonResult 自动将您的对象序列化为 JSON。你应该使用:

public JsonResult Index(string grpCode)
{  
    var data = new EmployeeDAL().EmployeeData(grpCode).employeeList;    
     return Json(data);        
}

编辑:如果警报数据给你, [object] [Oject]那么返回的可能不是一个简单的项目列表,而是一个复杂的对象。

例如:

{"items":[{"name":"test","completed":false},{"name":"test2","completed":true}]}

然后项目数组(test 和 test2)将包含在 data.items 中,您可以使用以下方法获取数组的长度:alert(data.items.length);

对于调试,我建议使用 Chrome,特别是使用 Network 和 Sources-tabs。

于 2013-09-30T19:54:53.007 回答