У меня есть JQuery DataTable, и я уже некоторое время использую его, наверное, здесь что-то упущено.
Однако недавно я столкнулся с одним из требований напрямую связываться с данными JSON.
Например, мой JSON выглядит, например, из API:
[{"componentNumber":"ABC","factory":"India","productNumber":"CR","productRevisionState":"123","placementTimeLocal":"2018-08-21T00:00:00","position":"up"},{"componentNumber":"ABC","factory":"India","productNumber":"CR","productRevisionState":"123","placementTimeLocal":"2018-08-21T00:00:00","position":"up"},
{"componentNumber":"ABC","factory":"India","productNumber":"CR","productRevisionState":"123","placementTimeLocal":"2018-08-21T00:00:00","position":"up"}]
Я знаю, что могу использовать JSON и вывести столбцы в Jquery и передать его в столбцы Datatables, но что я смотрю, еслиЕсть простой способ, когда Datatable автоматически принимает столбец, например:
$.ajax({
type: "Post",
url: "http://localhost:5555/myapi",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
//datasource = data;
$('#myTable').DataTable({
"Data": JSON.parse(data),
"Columns" : JSON.parse(data)
});
},
error: function (err) {
alert(err);
}
})
Что я ищу, это:
Есть ли в JQuery такие функции или нет?Если нет, вы можете предложить любую другую библиотеку Datatable, которая подходит для большого набора данных.
Я хочу избавиться от всех дополнительных циклов вокруг кода
- Iне могу обновить исходную систему, откуда возвращаются данные
Обновленная версия кода, взяты ответы ниже, спасибо Кирану, что заставил меня немного двигаться:
$.ajax({
type: "Post",
url: "http://localhost:5555/myapi",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
// **how to get rid of this loop? for looping columns**
var adColumns = [];
$.each(data[0], function (i, item) {
var col = {
data: i,
title: i
};
adColumns.push(col);
})
//datasource = data;
console.log(data);
$('#myTable').DataTable({
"data": data,
"info": true,
"paging": true,
"columns": adColumns
});
},
error: function (err) {
alert(err);
}
})