Доступ к массиву, который заключен в object приходящий из crud php
Создан datatable на основе данных, которые приходят из crud php.
Задача: Каждые 10 секунд делать запрос в crud, сравнивать массивы данных и, если массивы отличаются, обновлять datatable.
Проблема: Не могу добраться до массива в объекте получая пустой массив вместо данных.
Вот мой объект выведенный через консоль js:

Когда, я пытаюсь добраться до массива:
data.dataSource.json
Мне совершенно непонятно такое поведение, хотя уже уйму тем прочитал на различных форумах по Json и object. Но, возможно, не то читал.
Далее я планирую этот массив перевести в строку и сравнить новый и старый варианты. Если строки отличаются, но обновить данные.
Код:
var data = new ej.data.DataManager({
url: '<?php echo get_theme_file_uri( 'crudstaff2.php' ); ?>/?action=getData&month=<?php if ( empty($_POST['month'])) { $date = time(); echo 'Jan';}else{echo $_POST['month'];}?>&year=<?php if ( empty($_POST['year1'])) { $date = time(); echo date('Y',$date)+1;}else{echo $_POST['year1'];}?>',
adaptor: new ej.data.ODataV4Adaptor(),
offline: true
});
ej.grids.Grid.Inject(ej.grids.Filter, ej.grids.Page, ej.grids.Sort, ej.grids.Group, ej.grids.Freeze);
var grid = new ej.grids.Grid({
dataSource: data,
width: '100%',
allowFiltering: true,
filterSettings: { type:'Excel' },
columns: []});
var filters = data.dataSource.json;
console.log(filters);
setInterval(function() {
var data = new ej.data.DataManager({
url: '<?php echo get_theme_file_uri( 'crudstaff2.php' ); ?>/?action=getData&month=<?php if ( empty($_POST['month'])) { $date = time(); echo 'Jan';}else{echo $_POST['month'];}?>&year=<?php if ( empty($_POST['year1'])) { $date = time(); echo date('Y',$date)+1;}else{echo $_POST['year1'];}?>',
adaptor: new ej.data.ODataV4Adaptor(),
offline: true
});
grid.dataSource = data;
grid.refresh();
}, 30000);
Вот решение:
var filters = data.dataSource.json;
var filters2 = data2.dataSource.json;
function showHello(filters, filters2){
if(filters2 === undefined || filters2.length == 0 || filters === undefined || filters.length == 0){
setTimeout
(
function()
{
var filters2 = data2.dataSource.json;
var filters = data.dataSource.json;
console.log('0');
showHello(filters, filters2);
},
1000
);
}
else{
var filters2 = data2.dataSource.json;
var filters = data.dataSource.json;
if(JSON.stringify(filters) === JSON.stringify(filters2)){
}
else {
grid.dataSource = data2;
grid.refresh();
data = data2;
}
}
}
showHello(filters, filters2);
