2
respostas

Passagem de Array do PHP para o JS para gerar gráficos com Chart.js

Olá pessoal, Sou iniciante em JS e estou com uma dificuldade em pegar um array vindo do PHP pelo "echo json_encode" e receber ele dentro do JS para criar os dados dos graficos no Chart.js. Segue trecho o código do arquivo.php

$resLine = getChartLine('certidao');

$data = array('dia' => [] , 'qtd' => [], 'nome' => [], 'total' => []);
      // Associando dados
      while ($dados = mysqli_fetch_assoc($resLine)) {
        array_push($data['dia'], $dados['dtchart']);
        array_push($data['qtd'], $dados['entrada']);
      }

$resPie = getChartPie('certidao');

    while ($dados = mysqli_fetch_assoc($resPie)) {
        array_push($data['nome'], $dados['nome']);
        array_push($data['total'], $dados['total']);
      }

echo json_encode($data);

A saida dele pelo ARQUIVO.PHP é dessa forma: "{"dia":["20 Mar 18","19 Mar 18","16 Mar 18","15 Mar 18","14 Mar 18","13 Mar 18","12 Mar 18","09 Mar 18","08 Mar 18","07 Mar 18"],"qtd":["19","14","22","21","13","20","19","20","21","15"],"nome":["Adriana","Fl\u00e1via","Marielle","Rahilla"],"total":["4","7","6","7"]}"

No JS eu recebo ele dessa forma, e o interessante que assim no meu wamp server ele funciona perfeitamente, carrega os dados que eu trouxe. Mas qndo jogo para a hospedagem, especificamente da Locaweb ele simplesmente não funciona. Segue o trecho do codigo que faço para receber os dados no JS:

$.ajax({
  type: "POST",
  url: "/admin/controllers/certchartsdata.php",
  data:{data: []},
  cache: false,

  success: function(result){
    try {
      result = $.parseJSON(result);
      var problemas = result['dia']
      var votos = result['qtd']
      var dataLine = {
        labels : problemas,
        datasets : [{
          label: 'Entrada',
          data: votos,
          backgroundColor: ['rgba(255, 99, 132, 0.2)'],
          borderColor: ['rgba(255, 99, 132, 1)'],
          borderWidth: 1,
        }]
      }
      var escrevente = result['nome']
      var qtdcert = result['total']
      var dataPie = {
          labels: escrevente,
          datasets: [{
              data: qtdcert,
            backgroundColor: ['#ff6384','#36a2eb','#cc65fe','#ffce56']
          }]
      }

      var ctx = document.getElementById("certDiaChart");
      window.myBar = new Chart(ctx, {
        type: 'line',
        data: dataLine,
        responsive : true
      });

      var ctx = document.getElementById("certEscChart");
      window.myPie = new Chart(ctx, {
          type: 'doughnut',
          data: dataPie,
          responsive: true
      });

    } catch(err) {
      console.log(err.message);
    }
  }, error: function(result) {
    console.log(result);
  }
});

O erro no console é: Unexpected token  in JSON at position 0 Se alguem conseguir me ajudar, ficaria muito grato! Obrigado!

2 respostas

Olá Junior,

Você já verificou as versões do PHP do seu Wamp com o da Locaweb? pode ser alguma configuração do PHP.INI que pode estar divergente, verifica isso antes, as vezes o seu código está certo, já que ele funciona no WAMP.

Abraços!

Bom dia Luiz,... verifiquei, a versão é a mesma que utilizo em meu servidor WAMP, (PHP 5.6.31) a única diferença é que no meu servidor local o SERVER API está setado como Apache Handle e na Locaweb como CGI/FastCGI.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software