我用谷歌搜索了几个小时来找到问题的解决方案,但直到现在还没有运气......
我正在使用...更正...我想使用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
答案 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,所以你可以尝试一下。