Olá Cassia. Joia? Eu estou tendo construir um gerador de gráfico com requisição ajax. O erro que da é esse: "SyntaxError: Unexpected end of JSON input". Ele carrega o gráfico, busca o banco de dados ao iniciar. O problema é qd dou submit. Ele está gravando os dados mas não está atualizando. Provavelmente está relacionado com manipulação de Callback. Sei que o código está monstruoso e provavelmente eu cometi uns 30 erros de boas práticas de programação. rsrs Um deles está muito na cara pq a função de carregamento do gráfico e a de atualização são duas funções com códigos iguais, mas eu só sei fazer assim. Bom. É isso. Se puder me ajudar.
index.php
<html>
  <head>
    <meta charset="UTF-8">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
      <!-- <link rel="stylesheet" href="css/bootstrap.min.css"> -->
      <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
  </head>
  <body>
      <div class="container column">
      <div class="grafico">
          <div id="columnchart_values"></div>
      </div> 
            <form id="cadastra" action="" method="post" >
              <table class="tabela">
                <thead>
                  <tr>
                    <th>Ano</th>
                    <th>Fantasy & Sci Fi</th>
                    <th>Romance</th>
                  </tr>
                </thead>
                  <tr>
                  <td><input class="form-control" name="Ano" type="text"></input></td>
                  <td><input class="form-control" name="Fantasy" type="number"></input></td>
                  <td><input class="form-control" name="Romance" type="number">
                  </tr>
                  </table>
                  <button id="adicionar" type="submit">Adicionar</button>
            </form>
    </div>
  </body>
  <?php include("grafico.php");?>
  <script type="text/javascript">
    google.charts.load("current", {packages:['corechart']});
    google.charts.setOnLoadCallback(drawChart);
        <?php include("conexao.php");
        include("banco-produto.php");?>
    function drawChart(){
        <?php $produtos = listaProdutos($conexao);?>
    var data = google.visualization.arrayToDataTable([
      ['Genre', 'Fantasy & Sci Fi', 'Romance',  { role: 'annotation' } ],
       <?php 
       foreach($produtos as $produto)
        {echo "['".$produto['Ano']."',"
        .$produto['Fantasy'].",".$produto['Romance'];}
      ?> 
    ]);
    var options = {
      width: 300,
      height: 300,
      legend: { position: 'top', maxLines: 3 },
      bar: { groupWidth: '75%' },
      isStacked: true,
    };
    var grafico = new google.visualization.ColumnChart(document.getElementById('columnchart_values'));
          grafico.draw(data, options);
    }
     $("#adicionar").click( function(event ) {
    // document.querySelector("#adicionar").addEventListener("click", function(event) {
    event.preventDefault();
    $.ajax({
        url: 'https://www.google.com/jsapi?callback',
        cache: true,
        dataType: 'script',
        success: function(){
            google.load('visualization', '1', {packages:['corechart'], 'callback' : function()
      {
        var form = document.querySelector("#cadastra");
        var dados = $('#cadastra').serialize();
        form.reset();
            $.ajax({
                 type: "POST",
                 dataType: "json",
                 async: true,
                 data: dados,
                 url: 'salvar.php',
                 success: function(response) {console.log("chegou aqui");
                    var data = google.visualization.arrayToDataTable([
      ['Genre', 'Fantasy & Sci Fi', 'Romance', 'Mystery/Crime', 'General',
       'Western', 'Literature', { role: 'annotation' } ],
<?php 
       foreach($produtos as $produto)
        {echo "['".$produto['Ano']."',"
        .$produto['Fantasy'].",".$produto['Romance'];}
      ?> 
    ]);
                    var options = options = {
      width: 300,
      height: 300,
      legend: { position: 'top', maxLines: 3 },
      bar: { groupWidth: '75%' },
      isStacked: true,
    };
                    var grafico = new google.visualization.ColumnChart(document.getElementById('columnchart_values'));
          grafico.draw(data, options);
                 },
                 error: function (xhr, ajaxOptions, thrownError) {
        alert(xhr.status);
        alert(thrownError);
      }
            });    
      }
    });
  }
});
});
    </script>
</html>salvar.php
<?php
  include("conexao.php");
  include("banco-produto.php");
$Ano = $_POST['Ano'];
$Fantasy = $_POST['Fantasy'];
$Romance= $_POST['Romance'];
 
             
            