Стала задача добавить проверку на наличие и валидность json-а взятого из файла в уже существующий код на jquery. Попробовал добавить два метода и как результат данный код перестал работать.
let shops = [];
window.firsTime = true;
window.dataTables = [];
function play() {
var audio = new Audio('./sound/add.mp3');
audio.play();
}
function check() {
$.getJSON( "db.json", function( data ) {
$.each( data, function( key, val ) {
$.each( val, function( name, json ) {
if( shops[name] === undefined ) {
$('body .container').append('<h5 style="text-align: center">'+name+'</h5');
$('body .container').append('<table class="table table-bordered dataTable" data-id="'+name+'" style="width:100%; margin: auto;"></table>');
$('body table[data-id="'+name+'"]').append("<thead><tr style='text-align: left; font-weight: bold;'><th>Id</th><th>Url</th><th>Article</th><th>Date</th><th>Price</th></tr></thead><tbody>");
shops[name] = json;
}
$('body table[data-id="'+name+'"] tr').removeClass('red');
addRows( name, json );
if (window.firsTime) {
window.dataTables.push({name: name, table: $('body table[data-id="'+name+'"]').DataTable()});
} else {
var table = window.dataTables.filter(obj => {
return obj.name === name;
});
if (!table) window.dataTables.push({name: name, table: $('body table[data-id="'+name+'"]').DataTable({
createdRow: function(row, data, dataIndex, cells) {
$(row).addClass('myRow');
},
})});
}
});
});
window.firsTime = false;
//ДОБАВИЛ два метода .DONE() и .FAIL()
}).done(function() { $('body').html("<div style=\"text-align: center\">get JSON request succeeded!</div>"); })
.fail(function() { $('body').html("<div style=\"text-align: center\">JSON file not found or empty <div style=\"text-align: center\"> <a style=\"line-height:1.0;\" class=\"btn btn-primary\" href=\"./authenticate.php?destroySession=1\" role=\"button\">Exit</a>"); });
function addRows(name, json) {
$.each( json, function( key, data ) {
var date = new Date(data.add_date);
var time = date.getFullYear() + ":" + (date.getMonth() + 1) + ":" + date.getDate() + ":<b>" + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds() + "</b>";
var row = "<tr data-id="+data.id+" style='text-align: left;'>\
<td width='1,5%'>"+data.id+"</td>\
<td width='2%'><a href="+data.url+">url</a></td>\
<td width='79.5%'>"+data.article_name+"</td>\
<td width='12%'>"+time+"</td>\
<td>"+data.price+" €</td>\
</tr>";
if(window.firsTime){
$('body table[data-id="'+name+'"]').append(row);
} else {
var table = window.dataTables.filter(obj => {
return obj.name === name;
})
var valid = true;
$.each(table[0].table.$("tr"), function(){
if(data.id == $(this).attr("data-id")){
valid = false;
}
})
if (valid) {
rowNode = table[0].table.row.add($(row)).draw().node();
$( rowNode ).css( 'background-color', 'red' )
play();
}
}
});
}
}
check();
setInterval(function(){
check();
}, 15000);
new Date("2020-04-03 10:42:55").getFullYear()