Задать вопрос
@nekolov

Как добавить проверку в код на наличие и валидность json-а хранящегося в файле?

Стала задача добавить проверку на наличие и валидность 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+" &euro;</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()
  • Вопрос задан
  • 52 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы