DataTables警告:table-无效的JSON响应



我知道这一定是最受欢迎的问题之一。不过,我看不出我的数据有什么问题。这是我的php:

$sql = "SELECT eventid, event_type, date_display, date_from, date_to, location, done FROM events LIMIT 0, 30";
$get_result = mysql_query($sql);
$arr = Array();
while($res=mysql_fetch_assoc($get_result))
{
$arr['data'][] = $res;
}
echo json_encode($arr);

我的JQuery:

function do_search()
{
var search_term=$("#search_term").val();
$.ajax
({
type:'post',
url:'get_results.php',
data:{
search:"search",
search_term:search_term
},
success:function(response)
{
console.log(JSON.parse(response))
$('#events').DataTable({
ajax: JSON.parse(response),
columns: [
{ data: 'eventid' },
{ data: 'event_type' },
{ data: 'date_display' },
{ data: 'date_from' },
{ data: 'date_to' },
{ data: 'location' },
{ data: 'done' },
],
"lengthMenu": [ [-1, 10, 25, 50, 100], ["All", 10, 25, 50, 100] ]
});

}
});

还有我的HTML:

<table id="events" class="display" style="width:100%">
<thead>
<tr>
<th>ID</th>
<th>Type</th>
<th>Date</th>
<th>From</th>
<th>To</th>
<th>Location</th>
<th>To do</th>
</tr>
</thead>
</table>

这是我在控制台中得到的数据:

{
"data": [
{
"eventid": "1",
"event_type": "Senate meeting",
"date_display": "61-60",
"date_from": "61",
"date_to": "60",
"location": "Unknown",
"done": "y"
},
{
"eventid": "2",
"event_type": "Legal hearing",
"date_display": "73-70",
"date_from": "73",
"date_to": "70",
"location": "Unknown",
"done": ""
},
[etc...]
]
}

据我所见,我正在遵循DataTables所期望的数据。我错过了什么?

我为每条记录获得了七个字段,表中确实有七个字段也映射在JQuery代码中。

在您发布的链接的示例中:https://datatables.net/examples/ajax/objects.html,datatables配置中的ajax选项用于提供返回JSON数据的文件/脚本的URL,以便datatables可以启动AJAX请求来获取它。

而您所做的是生成自己的AJAX请求,然后将响应传递给数据表。如果要这样做,应该通过data选项将其提供给数据表。现在编码的场景实际上更接近这个示例:https://datatables.net/examples/data_sources/js_array.html

例如

$('#events').DataTable({
data: JSON.parse(response),

附言:有关如何将DataTables配置为直接使用AJAX请求作为数据源的更完整讨论,请参阅https://datatables.net/manual/ajax

最新更新