jQuery 数据表 - 未找到匹配的记录
jQuery Datatables - No matching records found
我正在使用 jQuery 带有服务器端分页的数据表。我已将我的 REST APIs 修改为 return 数据表文档中指定的必要数据。问题是页数、总行数等数据在 UI 中可见,但行数未见。我收到一条消息 'No matching records found',但页数和总行数显示在数据表 UI 中。我还检查了 API 响应的网络选项卡,数据格式正确,如下所示:
{"recordsFiltered":34096,"data":[{"isCompleted":"true","stockNumber":0,"transactionCount":0},{"isCompleted":"false","stockNumber":1,"transactionCount":0},{"isCompleted":"false","stockNumber":2,"transactionCount":0},{"isCompleted":"false","stockNumber":3,"transactionCount":0},{"isCompleted":"false","stockNumber":4,"transactionCount":0},{"isCompleted":"false","stockNumber":5,"transactionCount":0},{"isCompleted":"false","stockNumber":6,"transactionCount":0},{"isCompleted":"false","stockNumber":7,"transactionCount":0},{"isCompleted":"false","stockNumber":8,"transactionCount":0},{"isCompleted":"false","stockNumber":9,"transactionCount":0}],"draw":1,"recordsTotal":34096}
Javascript代码:
$('#stocklist').DataTable({
"serverSide": true,
"ajax": {"url":"/fetchStocks,
"dataSrc": function(data){
return data;
}
}
});
每当我单击下一页图标时,服务器 return 都会提供正确的更新数据,并且数据表也会更新为最新的行数和页数。但是,这些行没有得到呈现,并且在浏览器控制台中也没有看到任何错误。如何调试这个以及我做错了什么?
如果要将dataSrc
选项作为函数使用,需要进行修改:
"ajax": {
"url":"/fetchStocks",
"dataSrc": function(data){
return data.data;
}
}
(请注意:在您问题的示例中,URL 字符串缺少结束 "
。这是一个语法错误,所以我认为它是copy/paste 某种问题。)
我把你的return data
改成了return data.data
。
原因是:当您将 JSON 响应分配给函数中的参数时,您最终会得到形状略有不同的 JSON 响应:
{
"recordsFiltered": 34096,
"data": {
"data": [{
"isCompleted": "true",
"stockNumber": 0,
"transactionCount": 0
}, {
"isCompleted": "false",
"stockNumber": 1,
"transactionCount": 0
},
...
}, {
"isCompleted": "false",
"stockNumber": 9,
"transactionCount": 0
}]
},
"draw": 1,
"recordsTotal": 34096
}
现在,为了找到您的 table 数据开始的数组,您必须使用 data.data
.
为了清楚起见:如果您的函数的参数名称是 foo
,那么您将需要这个:
"ajax": {
"url":"/fetchStocks",
"dataSrc": function( foo ){
return foo.data;
}
}
话虽如此,这里没有必要使用 dataSrc
,因为您没有以任何方式操纵 JSON(除了将其分配给新变量之外)。
默认情况下,DataTables 希望在名为 data
的顶级对象中找到 table 的数组数据 - 在您的原始 JSON 中它已经是:
{ "recordsFiltered":34096, "data": [{"isCompleted":"true", ...
我正在使用 jQuery 带有服务器端分页的数据表。我已将我的 REST APIs 修改为 return 数据表文档中指定的必要数据。问题是页数、总行数等数据在 UI 中可见,但行数未见。我收到一条消息 'No matching records found',但页数和总行数显示在数据表 UI 中。我还检查了 API 响应的网络选项卡,数据格式正确,如下所示:
{"recordsFiltered":34096,"data":[{"isCompleted":"true","stockNumber":0,"transactionCount":0},{"isCompleted":"false","stockNumber":1,"transactionCount":0},{"isCompleted":"false","stockNumber":2,"transactionCount":0},{"isCompleted":"false","stockNumber":3,"transactionCount":0},{"isCompleted":"false","stockNumber":4,"transactionCount":0},{"isCompleted":"false","stockNumber":5,"transactionCount":0},{"isCompleted":"false","stockNumber":6,"transactionCount":0},{"isCompleted":"false","stockNumber":7,"transactionCount":0},{"isCompleted":"false","stockNumber":8,"transactionCount":0},{"isCompleted":"false","stockNumber":9,"transactionCount":0}],"draw":1,"recordsTotal":34096}
Javascript代码:
$('#stocklist').DataTable({
"serverSide": true,
"ajax": {"url":"/fetchStocks,
"dataSrc": function(data){
return data;
}
}
});
每当我单击下一页图标时,服务器 return 都会提供正确的更新数据,并且数据表也会更新为最新的行数和页数。但是,这些行没有得到呈现,并且在浏览器控制台中也没有看到任何错误。如何调试这个以及我做错了什么?
如果要将dataSrc
选项作为函数使用,需要进行修改:
"ajax": {
"url":"/fetchStocks",
"dataSrc": function(data){
return data.data;
}
}
(请注意:在您问题的示例中,URL 字符串缺少结束 "
。这是一个语法错误,所以我认为它是copy/paste 某种问题。)
我把你的return data
改成了return data.data
。
原因是:当您将 JSON 响应分配给函数中的参数时,您最终会得到形状略有不同的 JSON 响应:
{
"recordsFiltered": 34096,
"data": {
"data": [{
"isCompleted": "true",
"stockNumber": 0,
"transactionCount": 0
}, {
"isCompleted": "false",
"stockNumber": 1,
"transactionCount": 0
},
...
}, {
"isCompleted": "false",
"stockNumber": 9,
"transactionCount": 0
}]
},
"draw": 1,
"recordsTotal": 34096
}
现在,为了找到您的 table 数据开始的数组,您必须使用 data.data
.
为了清楚起见:如果您的函数的参数名称是 foo
,那么您将需要这个:
"ajax": {
"url":"/fetchStocks",
"dataSrc": function( foo ){
return foo.data;
}
}
话虽如此,这里没有必要使用 dataSrc
,因为您没有以任何方式操纵 JSON(除了将其分配给新变量之外)。
默认情况下,DataTables 希望在名为 data
的顶级对象中找到 table 的数组数据 - 在您的原始 JSON 中它已经是:
{ "recordsFiltered":34096, "data": [{"isCompleted":"true", ...