我正在尝试显示带有数据表的大学时间表。我用datatable ajax发送请求。但是随着响应变得不确定。
服务器端代码:我有带有时间表的数组。
<?php
// File: schedule_ajax_return.php
$data = [
1 => [
"monday" => "Ағылшын тілі 1год группа 8К</br>Қонысбаева Айжан Әміржанқызы</br>203",
"tuesday" => "</br></br>",
"wednesday" => "</br></br>",
"thursday" => "</br></br>",
"friday" => "</br></br>",
],
2 => [
"monday" => "</br><br>",
"tuesday" => "</br></br>",
"wednesday" => "</br></br>",
"thursday" => "</br></br>",
"friday" => "</br></br>",
],
3 => [
"monday" => "</br><br>",
"tuesday" => "</br></br>",
"wednesday" => "</br></br>",
"thursday" => "</br></br>",
"friday" => "</br></br>",
],
4 => [
"monday" => "</br><br>",
"tuesday" => "</br></br>",
"wednesday" => "</br></br>",
"thursday" => "</br></br>",
"friday" => "</br></br>",
],
5 => [
"monday" => "</br><br>",
"tuesday" => "</br></br>",
"wednesday" => "</br></br>",
"thursday" => "</br></br>",
"friday" => "</br></br>",
],
];
echo json_encode($data);
然后我用echo json_encode($array);
客户端Im接受响应并在带有列的列中显示数据
var table = $('#schedule_by_group').DataTable({
select:true,
dom: 'Bfrtip',
ajax: {
"url": "schedule_ajax_return.php",
"dataSrc": "",
"data":{"group_id": group_id},
"type": "POST"
},
columns : [
{"data": "monday"},
{"data": "tuesday"},
{"data": "wednesday"},
{"data": "thursday"},
{"data": "friday"}
]
});
在数据表文档中,我读到我可以将数据作为数组数组或对象数组发送。因此,我将其作为数组数组发送,但显示未定义。
答案 0 :(得分:1)
请参阅Data aaray location上有关datatables.net的文档
强调地雷:
1)简单的数据数组:
// ... dataSrc: '' // ...
2)具有数据属性的对象-请注意,此处显示的数据参数格式可用于简化的DataTables初始化,因为 data是DataTables在源数据对象中查找的默认属性。 / p>
// ... dataSrc: 'data' // ...
您的JSON响应应为
[
{
"monday": "Ағылшын тілі 1год группа 8К</br>Қонысбаева Айжан Әміржанқызы</br>203",
"tuesday": "</br></br>",
"wednesday": "</br></br>",
"thursday": "</br></br>",
"friday": "</br></br>"
},
{
"monday": "</br><br>",
"tuesday": "</br></br>",
"wednesday": "</br></br>",
"thursday": "</br></br>",
"friday": "</br></br>"
},
{
"monday": "</br><br>",
"tuesday": "</br></br>",
"wednesday": "</br></br>",
"thursday": "</br></br>",
"friday": "</br></br>"
},
{
"monday": "</br><br>",
"tuesday": "</br></br>",
"wednesday": "</br></br>",
"thursday": "</br></br>",
"friday": "</br></br>"
},
{
"monday": "</br><br>",
"tuesday": "</br></br>",
"wednesday": "</br></br>",
"thursday": "</br></br>",
"friday": "</br></br>"
}
]
与dataSrc: "",
合作
[Explore online on jsoneditoronline.org]
如果您的JSON具有这种结构
{
"data": [
{
"monday": "Ағылшын тілі 1год группа 8К</br>Қонысбаева Айжан Әміржанқызы</br>203",
"tuesday": "</br></br>",
"wednesday": "W</br></br>",
"thursday": "</br></br>",
"friday": "</br></br>"
},
{
"monday": "</br><br>",
"tuesday": "</br></br>",
"wednesday": "</br></br>",
"thursday": "</br></br>",
"friday": "</br></br>"
},
{
"monday": "</br><br>",
"tuesday": "</br></br>",
"wednesday": "W2</br></br>",
"thursday": "</br></br>",
"friday": "</br></br>"
},
{
"monday": "</br><br>",
"tuesday": "</br></br>",
"wednesday": "</br></br>",
"thursday": "</br></br>",
"friday": "</br></br>"
},
{
"monday": "</br><br>",
"tuesday": "</br></br>",
"wednesday": "</br></br>",
"thursday": "</br></br>",
"friday": "</br></br>"
}
]
}
您可以省略dataSrc: "",
,因为将使用"data"
的默认值。
[Explore online on jsoneditoronline.org]
我制作了一个example on CodeSandbox,它使用静态JSON而不是PHP数组,但是原理应该很清楚。我制作了两个JSON文件(test-array.json
和test-data.json
)。 test-array.json
与dataSrc: ""
或dataSrc: null
一起使用;并且test-data.json
与dataSrc: "data"
或dataSrc: undefined
一起使用。
但是您的PHP代码创建了不同的结构,如here in 3v4l.org(structure inspect)所示。 PHP代码[ 1 => [ '...' ] ]
创建一个关联数组,而不是索引数组。关联数组是json_encoded到JSON对象,而不是我们需要的JSON数组。为此,您必须在数组中省略键(尽管它们是数字)。应该这样做:
<?php
// File: schedule_ajax_return.php
$data = [
[
"monday" => "Ағылшын тілі 1год группа 8К</br>Қонысбаева Айжан Әміржанқызы</br>203",
"tuesday" => "</br></br>",
"wednesday" => "</br></br>",
"thursday" => "</br></br>",
"friday" => "</br></br>",
],
[
"monday" => "</br><br>",
"tuesday" => "</br></br>",
"wednesday" => "</br></br>",
"thursday" => "</br></br>",
"friday" => "</br></br>",
],
[
"monday" => "</br><br>",
"tuesday" => "</br></br>",
"wednesday" => "</br></br>",
"thursday" => "</br></br>",
"friday" => "</br></br>",
],
[
"monday" => "</br><br>",
"tuesday" => "</br></br>",
"wednesday" => "</br></br>",
"thursday" => "</br></br>",
"friday" => "</br></br>",
],
[
"monday" => "</br><br>",
"tuesday" => "</br></br>",
"wednesday" => "</br></br>",
"thursday" => "</br></br>",
"friday" => "</br></br>",
],
];
echo json_encode($data);