数据表无法获得响应

时间:2019-02-14 08:12:56

标签: javascript php datatables

我正在尝试显示带有数据表的大学时间表。我用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);

将其作为json返回

客户端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"}
    ]
}); 

在数据表文档中,我读到我可以将数据作为数组数组或对象数组发送。因此,我将其作为数组数组发送,但显示未定义。

1 个答案:

答案 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.jsontest-data.json)。 test-array.jsondataSrc: ""dataSrc: null一起使用;并且test-data.jsondataSrc: "data"dataSrc: undefined一起使用。

但是您的PHP代码创建了不同的结构,如here in 3v4l.orgstructure 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);

请参见here on 3v4l.org