Недопустимая ошибка ответа JSON при использовании JQuery DataTables с PHP & AJAX - PullRequest
0 голосов
/ 16 апреля 2020

Я впервые работаю с DataTables и сталкиваюсь с проблемами, фактически помещающими данные в таблицу. Я считаю, что соответствует правильному формату JSON, который DataTables вызывает для использования параметра ajax, однако я все еще получаю сообщение об ошибке «Недопустимый 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"}

Любая помощь будет принята с благодарностью!

Редактировать: Добавлено в рабочий код с сопоставленным источником данных и столбцами из ответа ниже

1 Ответ

1 голос
/ 16 апреля 2020

Как упомянуто в моих комментариях, проверьте формат вывода вашего скрипта PHP ( это должен быть действительный json со всеми обязательными полями, который ваш JS код ожидает ), затем измените значение типа данных в 'json' и добавьте contentType в ... ajax .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": ""
    }
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...