【问题标题】:Invalid JSON response error using JQuery DataTables with PHP & AJAX使用带有 PHP 和 AJAX 的 JQuery DataTables 时出现无效的 JSON 响应错误
【发布时间】:2020-04-16 16:23:06
【问题描述】:

我是第一次使用 DataTables,但实际上将数据放入表中时遇到了问题。我相信我已经匹配了 DataTables 要求在其中使用 ajax 选项的正确 JSON 格式,但是在加载时我仍然收到“无效 JSON 响应”错误。

这是我的 JS,我将它放在 HTML 页面中调用的单独文件中:

$(document).ready(function () {
  $("#copingTable").DataTable({
    "ajax": {
      "url": "overviewdata.php",
      "type": "POST",
      "dataType": "json",
      "contentType": "application/json; charset=utf-8",
      "dataSrc": "data"
    },
    "columns": [
      {"data": "FormID"},
      {"data": "SubmittedBy"},
      {"data": "Email"},
      {"data": "Date"}
    ]
  });
});

还有我的 PHP:

$storiesSql = "SELECT FormID, CONCAT(FirstName, ' ', LastName) AS SubmittedBy, Email, DATE_FORMAT(Date, '%m/%d/%Y') AS Date FROM Stories";
  $storiesStmt = $pdo->query($storiesSql);

  $dataArray = array();

  while($row = $storiesStmt->fetch()){
    array_push($dataArray, array("FormID"=>$row['FormID'], "SubmittedBy"=>$row["SubmittedBy"], "Email"=>$row["Email"], "Date"=>$row['Date']));
  }

  echo json_encode(array("data"=>$dataArray));

这是我收到的 JSON 响应的格式(已编辑为正确):

{"data":[{"FormID":"5e9754efc8aec","SubmittedBy":"Test Test","Email":"adam.weissert@sru.edu","Date":"04\/15\/2020"}

任何帮助将不胜感激!

编辑:在工作代码中添加了映射数据源和下面答案中的列

【问题讨论】:

  • 您确定您的 php 脚本返回的是 JSON 格式吗?
  • 至少我是这么认为的,我是根据this 格式化它的方式来设计的
  • 检查“网络”选项卡的“响应”部分以查看完整响应。也许在 JSON 之前或之后有一些 HTML 或错误消息。
  • 我的意思是服务器端并确保它是 100% JSON 在输出之前添加 echo ...: header('Content-Type: application/json');
  • 好的,所以使用标题代码这是我得到的格式:[{"FormID":"5e9754efc8aec"},{"FormID":"5e985dc946c58"},{"FormID":"5e987e6d4ad0e"},{"FormID":"5e988564524cb"}]

标签: php jquery datatables


【解决方案1】:

正如我的 cmets 中所提到的,检查您的 PHP 脚本输出的格式(它应该是一个有效的 json,其中包含您的 JS 代码所期望的所有必填字段),然后将 datatype 值更改为 ' json' 的值并在 ...ajax.contentType 字段中添加 contentType:

$(document).ready(function () {
$("#copingTable").DataTable({
    "processing": true,
    "serverSide": true,
    "ajax": {
      "url": "overview.php",
      "type": "POST",
      "dataType": "json",
      "contentType": "application/json; charset=utf-8",
      "dataSrc": ""
    }
  });
});

【讨论】:

  • 感谢您的帮助!这有助于解决问题:]
猜你喜欢
  • 1970-01-01
  • 2018-06-12
  • 2018-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-13
  • 2014-01-15
  • 1970-01-01
相关资源
最近更新 更多