2016-10-06 2 views
0

Я уже исследовал все, что могу. Я все еще получаю ужасную ошибкуЗапрошенные данные Таблицы

Requested the unknown parameter 'title' for row 0, column 0

для следующего кода, встроенного в моем index.html:

$("#cd-table").DataTable({ 
    "render": { "_": "plain", "filter": "filter", "display": "display"}, 
    "ajax" : { "url" : "cdsort.php", "dataSrc" : "array1" }, 
    "columns" : [ { "data": "title" }, { "data": "description" }, { "data": "location" }, { "data": "date" } ] 
}); 

Сервер ответ JSON должен быть правильным (недекодированным):

{"array1":[" {\"title\":\"test\",\"description\":\"test\",\"location\":\"test\",\"date\":\"05\\\/Oct\\\/2016\"}"]} 

Любые идеи?

+0

Использует ли '{" data ": 0}, {" data ": 1}' и т. Д. Работу? – markpsmith

+0

Я пробовал это раньше. Все, что делает, по-видимому, это выбор отдельных символов в строке JSON: 0 - это '{', 1 is ", 2 is 'd' ... и т. Д. – SomeDude

ответ

0

Нашел мою проблему. Это ОЧЕНЬ тонкая ошибка PHP (для меня).

При сборке мой массив объектов JSON, я использовал это заявление (в for цикле):

array_push($cd_json, json_encode(array("title" => $cd_row[0], "description" => $cd_row[1], "location" => $cd_row[2], "date" => $date_time))); 

и позже, при возврате моего JSON массив клиента, я использую это:

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

Ошибка заключалась в использовании json_encode поверх предыдущего json_encode, что эффективно искажало тип данных JSON моего массива.

Когда я делаю это вместо DataTables понимает мои данные, и это правильно отформатирован:

array_push($cd_json, array("title" => $cd_row[0], "description" => $cd_row[1], "location" => $cd_row[2], "date" => $date_time)); 

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

Урок: Просто используйте один json_encode) вызова (и это будет рекурсивно кодировать массивы внутри массивов.

Смежные вопросы