DataTables ajax 需要返回数据源的显式 json 集合名称?
DataTables ajax requires explicit json collection name for the returned datasource?
我最近 运行 在实现 jquery 数据表的 ajax 功能时遇到了问题。在我实际为我的 json 对象集合指定一个明确的名称之前,我无法显示任何内容。如果没有返回任何命名,难道不应该有一个默认数据源吗?
客户端控件设置(包括向动态锚点提供数据的隐藏字段:
$('#accountRequestStatus').dataTable(
{
"destroy": true, // within a method that will be called multiple times with new/different data
"processing": true,
"ajax":
{
"type": "GET",
"url": "@Url.Action("SomeServerMethod", "SomeController")",
"data": { methodParam1: 12341, methodParam2: 123423, requestType: 4123421 }
}
, "paging": false
, "columns": [
{ "data": "DataElement1" },
{ "data": "DataElement2", "title": "Col1" },
{ "data": "DataElement3", "title": "Col2" },
{ "data": "DataElement4", "title": "Col3" },
{ "data": "DataElement5", "title": "Col4" },
]
, "columnDefs": [
{
"targets": 0, // hiding first column, userId
"visible": false,
"searchable": false,
"sortable": false
},
{
"targets": 5, // creates action link using the hidden data for that row in column [userId]
"render": function (data, type, row) {
return "<a href='@Url.Action("ServerMethod", "Controller")?someParam=" + row["DataElement1"] + "'>Details</a>"
},
"searchable": false,
"sortable": false
}
]
});
这是我的服务器端代码片段,returns json 集合。
tableRows 是包含要显示的数据的模型集合。
var json = this.Json(new { data = tableRows });
json.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
return json;
正如我之前所说,ajax 调用返回了数据,但在我为集合命名之前不会显示。也许我在文档中错过了这个必需的步骤,但是 将控件连接到单个返回的集合作为默认数据源并且不需要名称 不是很有意义吗?弄清楚这个名字相当于花 2 个多小时来尝试不同的东西。这就是我要说的。
也许这对其他人也有帮助...
dataTables 实际上有一个 dataSrc
属性! dataTables 将在 JSON 中查找 data
或 aaData
部分。这就是为什么你最终让它与 new { data=tableRows }
一起工作的原因。即ifdataSrc
不指定!如果您的 JSON 与该概念不同,您必须指定 dataSrc
:
如果你 return 一个未命名的数组/集合 [{...},{...}]
:
ajax: {
url: "@Url.Action("SomeServerMethod", "SomeController")",
dataSrc: ""
}
如果您 return 一个 JSON 数组的名称不同于 data
或 aaData
,例如 customers
:
ajax: {
url: "@Url.Action("SomeServerMethod", "SomeController")",
dataSrc: "customers"
}
如果内容像{ a : { b : [{...},{...}] }}
那样嵌套
ajax: {
url: "@Url.Action("SomeServerMethod", "SomeController")",
dataSrc: "a.b"
}
如果你有非常复杂的 JSON 或需要以任何方式操纵 JSON,比如从内容中挑选樱桃 - dataSrc
也可以是一个函数:
ajax: {
url: "@Url.Action("SomeServerMethod", "SomeController")",
dataSrc: function(json) {
//do what ever you want
//return an array containing JSON / object literals
}
}
希望以上内容能解决问题![=27=]
我最近 运行 在实现 jquery 数据表的 ajax 功能时遇到了问题。在我实际为我的 json 对象集合指定一个明确的名称之前,我无法显示任何内容。如果没有返回任何命名,难道不应该有一个默认数据源吗?
客户端控件设置(包括向动态锚点提供数据的隐藏字段:
$('#accountRequestStatus').dataTable(
{
"destroy": true, // within a method that will be called multiple times with new/different data
"processing": true,
"ajax":
{
"type": "GET",
"url": "@Url.Action("SomeServerMethod", "SomeController")",
"data": { methodParam1: 12341, methodParam2: 123423, requestType: 4123421 }
}
, "paging": false
, "columns": [
{ "data": "DataElement1" },
{ "data": "DataElement2", "title": "Col1" },
{ "data": "DataElement3", "title": "Col2" },
{ "data": "DataElement4", "title": "Col3" },
{ "data": "DataElement5", "title": "Col4" },
]
, "columnDefs": [
{
"targets": 0, // hiding first column, userId
"visible": false,
"searchable": false,
"sortable": false
},
{
"targets": 5, // creates action link using the hidden data for that row in column [userId]
"render": function (data, type, row) {
return "<a href='@Url.Action("ServerMethod", "Controller")?someParam=" + row["DataElement1"] + "'>Details</a>"
},
"searchable": false,
"sortable": false
}
]
});
这是我的服务器端代码片段,returns json 集合。
tableRows 是包含要显示的数据的模型集合。
var json = this.Json(new { data = tableRows });
json.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
return json;
正如我之前所说,ajax 调用返回了数据,但在我为集合命名之前不会显示。也许我在文档中错过了这个必需的步骤,但是 将控件连接到单个返回的集合作为默认数据源并且不需要名称 不是很有意义吗?弄清楚这个名字相当于花 2 个多小时来尝试不同的东西。这就是我要说的。
也许这对其他人也有帮助...
dataTables 实际上有一个 dataSrc
属性! dataTables 将在 JSON 中查找 data
或 aaData
部分。这就是为什么你最终让它与 new { data=tableRows }
一起工作的原因。即ifdataSrc
不指定!如果您的 JSON 与该概念不同,您必须指定 dataSrc
:
如果你 return 一个未命名的数组/集合 [{...},{...}]
:
ajax: {
url: "@Url.Action("SomeServerMethod", "SomeController")",
dataSrc: ""
}
如果您 return 一个 JSON 数组的名称不同于 data
或 aaData
,例如 customers
:
ajax: {
url: "@Url.Action("SomeServerMethod", "SomeController")",
dataSrc: "customers"
}
如果内容像{ a : { b : [{...},{...}] }}
那样嵌套
ajax: {
url: "@Url.Action("SomeServerMethod", "SomeController")",
dataSrc: "a.b"
}
如果你有非常复杂的 JSON 或需要以任何方式操纵 JSON,比如从内容中挑选樱桃 - dataSrc
也可以是一个函数:
ajax: {
url: "@Url.Action("SomeServerMethod", "SomeController")",
dataSrc: function(json) {
//do what ever you want
//return an array containing JSON / object literals
}
}
希望以上内容能解决问题![=27=]