Я пытаюсь использовать jQuery DataTables в своем проекте. Но у меня проблема, потому что это не работает с моим кодом.
Вот мой пример API
{
"single": [
{
"name": "Jessica"
},
{
"name": "John"
},{
"name": "Jasmine"
}
],
"married": [
{
"name": "Alpa"
},
{
"name": "Haifa"
},{
"name": "Teala"
}
]
}
Вот мой образец Datatables, но он не работает.
$('#table').DataTable({
responsive: true,
ajax: {
url: 'http://localhost:22222/api/status/',
method: 'GET',
xhrFields: {
withCredentials: true
}
},
columns: [
{ data: "single.name"}
]
});
});
У меня в консоли ошибка, которая говорит
Uncaught TypeError: Cannot read property 'length' of undefined
Заранее спасибо.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Ваша проблема в том, что исходные данные, которые вы пытаетесь передать в DataTables, структурированы неправильно - в массиве/объекте, который вы используете в качестве исходных данных, каждая запись должна соответствовать строке таблицы.
Итак, вам нужно либо изменить формат данных на стороне сервера (что более предпочтительно), либо вы можете постобработать его на стороне пользователя:
var srcData = {
"single": [
{
"name": "Jessica"
},
{
"name": "John"
},{
"name": "Jasmine"
}
],
"married": [
{
"name": "Alpa"
},
{
"name": "Haifa"
},{
"name": "Teala"
}
]
};
//Transform srcData so each entry corresponds to table row
const transformData = data => {
let res = [];
data.single.forEach(entry => res.push({name:entry.name,status:'single'}));
data.married.forEach(entry => res.push({name:entry.name,status:'married'}));
return res;
};
srcData = transformData(srcData);
//Render datatable itself
$('#mytable').DataTable({
data: srcData,
sDom: 't',
columns: [{title:'Name', data:'name'},{title:'Status', data:'status'}]
});<!doctype html>
<html>
<head>
<script src = "https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src = "https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
<link rel = "stylesheet" type = "text/css" href = "https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css">
</head>
<body>
<table id = "mytable"></table>
</body>
</html>Но мои данные из API
как уже говорилось, нет проблем и с преобразованием ваших данных на стороне пользователя - как в этом примере
Можете ли вы создать JSFiddle?