【问题标题】:Datatables cant get response数据表无法得到响应
【发布时间】:2019-02-14 08:12:56
【问题描述】:

我试图用数据表显示大学日程。我用 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返回

客户端我接受响应并以列的形式显示数据

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

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

【问题讨论】:

  • 你为什么有"dataSrc": "",?您还试图在名为package.json 的 json 文件中使用 ajax 获取数据吗?这是正确的道路吗?我认为您只是很难理解他们的 ajax 是如何工作的。请仔细阅读this
  • @Islam Elshobokshy 我刚刚使用 package.json 作为 test 。实际上路径是 schedule_ajax_return.php 。我这里忘记改了。我在文档中读到“dataSrc”:“”,是必须有的东西。
  • 您将内容从服务器传送到浏览器的格式是什么? JSON?
  • @yunzen 是的。我将二维数组转换为 json 并发送它。

标签: javascript php datatables


【解决方案1】:

datatables.net 上查看有关Data aaray location 的文档

强调我的:

1) 简单的数据数组:

// ... dataSrc: '' // ...

2) 具有数据属性的对象 - 请注意,此处显示的数据参数格式可以与简化的 DataTables 初始化一起使用,因为 data 是 DataTables 在源数据对象中查找的默认属性

// ... 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.org (structure inspect) 所示。 PHP 代码[ 1 =&gt; [ '...' ] ] 创建一个关联数组,而不是索引数组。关联数组是 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

【讨论】:

    猜你喜欢
    • 2019-11-11
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    相关资源
    最近更新 更多