Как проанализировать JSON, полученный из Datatables ajax call?
Я могу успешно заполнить свой datatable вызовом ajax, но тогда я не знаю, как разобрать JSON, который получен datatable с этим вызовом ajax.
вот мой код JavaScript, который делает ajax вызов на сервер и правильно заполняет мой datatable:
$('#transactions').DataTable({
"processing": true,
"ajax": {
"url": "/transactions
},
"columns": [
{ "data": "car"},
{ "data": "card_number"},
{ "data": "invoice"},
{ "data": "status"}
]
});
это объект JSON, возвращенный с сервера:
{
"data": [
{
"car": 190,
"card_number": "6395637",
"invoice": 200,
"status": "success"
},
{
"car": 191,
"card_number": "9473650",
"invoice": 180,
"status": "success"
}
],
"balance": 7300
}
Как видите,data
параметр возвращаемого объекта JSON используется функцией datatables для заполнения datatables, и теперь я хочу разобрать balance
параметр, но я не могу. Как я могу достичь этого?
3 ответов
что-то вроде этого:
$('#transactions').dataTable({
"ajax" : {
"url" : "/transactions",
"dataSrc" : function (json) {
// manipulate your data (json)
...
// return the data that DataTables is to use to draw the table
return json.data;
}
}
});
Не используйте функцию url DataTable, сделайте Ajax вызовите себя
$.getJSON('/transactions', function(response) {
$('#transactions').dataTable({
processing: true,
data: response.data,
columns: [
{ data: "car"},
{ data: "card_number"},
{ data: "invoice"},
{ data: "status"}
]
});
window.someGlobalOrWhatever = response.balance
});
поскольку DataTables 1.10, вы можете использовать ajax.json()
функция: https://datatables.net/reference/api/ajax.json()
Я реализовал его в приведенном ниже примере кода.
$( document ).ready(function() {
$('#search-form').submit(function(e) {
e.preventDefault();
var table = $('#location-table').DataTable({
destroy: true,
ajax: "/locations.json",
columns: [
{ "data": "code" },
{ "data": "status" },
{ "data": "name" },
{ "data": "region" },
{ "data": "address" },
{ "data": "city" },
{ "data": "state" },
{ "data": "zip" },
{ "data": "phone_number" },
]
})
table.on( 'xhr', function () {
var json = table.ajax.json();
$('#totals').text(json.totals)
});
})
});
примечание для этого, чтобы работать, вы должны инициализировать datatable с $('#location-table').DataTable()
, а не $('#location-table').dataTable
(разница в том, что заглавная D)