DataTable с источником JS
Я пытаюсь сгенерировать некоторые данные с помощью Sage Sdata, используя javascript, и после этого обработать эти данные с помощью плагина datatables, но получаю ошибку:
Предупреждение DataTables: таблица id= пример - запрошенный неизвестный параметр '1' для строки 0. Для получения дополнительной информации об этой ошибке, пожалуйста, см. http://datatables.net/tn/4
if(aNode2)
{
resultTextData += '[';
resultTextData += "'" + aNode1.nodeValue + "'";
resultTextData += ',';
resultTextData += "'" + aNode2.nodeValue + "'";
resultTextData += ',';
resultTextData += "'" + aNode3.nodeValue + "'";
resultTextData += ']';
resultTextData += ',';
}
var dataSet = resultTextData ;
console.log(dataSet);
$('#example').dataTable({
"data": dataSet,
"aoColumns": [
{ "aDataSort": [ 0, 1 ] },
{ "aDataSort": [ 1, 0 ] },
{ "aDataSort": [ 2, 3 ] }
]
});
2 ответа
data
опция не принимает строковые данные. См. https://datatables.net/reference/option/data
DataTables поддерживают загрузку из строки в кодировке json. Вот пример преобразования XML-результата в массив.
function FormatDataByIolist($data,$IOlist) {
$returnAray = array();
$RecordCount = count($data);
for($i = 0; $i < $RecordCount; $i++) {
$tmpSingleRow = array();
foreach($IOlist as $colName) {
$columVal = (string)$data[$i]->$colName;
$tmpSingleRow[$colName] = $columVal;
}
array_push($returnAray,$tmpSingleRow);
unset($tmpSingleRow);
}
return $returnAray;
}
После этого вам нужно преобразовать массив в строку json_encoded, которую может понять DataTable.
$formatted = '{ "data": '.json_encode($returnAray).'}';
После написания этого в бэкэнде вам нужно добавить следующую строку в ваше определение данных
"ajax": "your.php?action=getJson"
your.php?action=getJson Метод должен быть GET и должен возвращать отформатированную строку json (как показано).
Я думаю, этот репозиторий поможет вам работать с SData. (Это модель для работы с SData) https://github.com/AramKocharyan/Sage-SData