在用于jQuery的DataTables-Table插件中发布数据

时间:2014-10-13 16:04:34

标签: javascript c# jquery json datatable

我用谷歌搜索了几个小时来找到问题的解决方案,但直到现在还没有运气......

我正在使用...更正...我想使用jQuery数据表插件(http://www.datatables.net/)来显示一些数据。

成功实现了以下步骤:

从* .asmx-service获取JSON数据。我甚至检查过它是否在http://jsonlint.com/

上有效
{"d":{"key":1,"email":"test@test.ch","language":"de","locked":false}}

出于调试目的,我在代码中添加了alert()标记。

 function LoadTable(businessUnitId) {
        $.ajax({
            url: url + "/GetAccounts",
            data: '{businessUnitId:"' + businessUnitId + '"}',
            contentType: "application/json; charset=utf-8",
            type: "POST",
            dataType: "json",
            cache: false,
            success: function(json) {
                for (var i in json.d) { // displays property name and its value --> works
                    alert(i + ": " + json.d[i]);
                }

                $('#tableAccounts').DataTable({
                    data: json.d, // tried json and json.d
                    columns: [
                        { title: "Test1", data: "key" },
                        { title: "Test2", data: "email" },
                        { title: "Test3", data: "locked" },
                        { title: "Test4", data: "language" }
                    ]
                });
            }
        });
    }

问题:我无法在表格中发布数据。列的标题已设置,但未添加具有JSON对象值的行。我认为问题可能是分配列属性。

非常感谢任何帮助。

TIA,xavier

1 个答案:

答案 0 :(得分:1)

the documentation开始,datatables期望选项data可以是2d数组或对象数组。

但是你传递data: json.d,其中json.d是一个json对象。由于您希望使用表,这意味着您希望在某个时刻显示多个项目,因此您的服务返回json对象数组是有意义的,如下所示:

{ "d" : [ {"key":1,"email":"test@test.ch","language":"de","locked":false} ] }

如果由于任何原因您只希望从服务中返回单个项目,则可以将其转换为单个对象的数组,并将数据选项作为data: [json.d]传递。

我创建了this fiddle,所以你可以尝试一下。