Problemas com retorno mysql e JSON

Boa tarde.

Bom tenho um problema que não consigo resolver.

Estou escrevendo um gráfico cujo os dados vem de uma consulta no banco de dados. Ao termino da consuita passo todos os dados para um array e converto para json usando uma função do php. A pergunta é: Como faço para uma função Javascript(JQuery no caso) entender esse array com os dados da consulta???

Segue a baixo parte do código que escrevi:


// arquivo Consulta.php

 $dataConsulta = $this->getLink()->query($sql);
        if(!$dataConsulta)
            die("Erro na consulta.". mysqli_error ($this->getLink()));
        
        // verificar quando houve medições
        while($retorno = $dataConsulta->fetch_array(MYSQLI_ASSOC))
            $this->arrDados["arrData"][] = $retorno[$campo_consulta];
        
        // consulta para verifcar a média a minima e máxima nas medições realizadas nos 'n' dias do mês escolhido
        while($objMedicoes = $retornoConsulta->fetch_object())
        {
                if($this->arrDados["tipo_de_medicao"]=="CO2")
                {
                    $this->arrDados["arrMin"][] = round($objMedicoes->MIN,0);
                    $this->arrDados["arrMax"][] = round($objMedicoes->MAX,0);
                    $this->arrDados["arrMedia"][] = round($objMedicoes->MEDIA,0);	
                }
                else
                {
                    $this->arrDados["arrMin"][] = round($objMedicoes->MIN,1);
                    $this->arrDados["arrMax"][] = round($objMedicoes->MAX,1);
                    $this->arrDados["arrMedia"][] = round($objMedicoes->MEDIA,1);	
                }
                $this->arrDados["numLinhasVerticais"]++;
        }
       $dadosLineares = json_encode($this->arrDados);            // dados do gráfico de multi linhas
  
       if(isset($dadosLineares)){
         echo $dadosLineares;
       }

Até aqui tenho todos os dados que preciso para criar um gráfico…

// arquivo graficos.js
   $.getJSON("./Consulta.php", function(data){
       alert(data);
    });

Bom. o problema e que “data” está com o valor de null. Pelo o que eu entendi do JSON, eu só consigo ler com a função getJSON se e somente se os dados estiverem em JSON, não pode ter conteúdo html na página, porém eu tenho uma página index.php onde tem um include do arquivo Consulta.php, que é uma classe que é instanciada na index e de la chamo os métodos de Consulta, ou seja quando dou echo $dadosLineares; na verdade a impressão é feita na index que contém html. É por isso que não funciona??? Alguém pode me ajudar nesta questão???

Desde de já agradeço.

Alguém pode me ajudar???

veja se a sua consulta retorna dados com acentos, ai use utf8_encode();

Não Perdeu, a minha consulta só retorna numeros. São medições de um sensor.

O que eu preciso fazer é pegar esa consulta transformar em json e ler com a função getJSON.

meu códgo está assm

Consulta.php
 while($objMedicoes = $retornoConsulta->fetch_object())
        {
                if($this->arrDados["tipo_de_medicao"]=="CO2")
                {
                    $this->arrDados["arrMin"][$i] = round($objMedicoes->MIN,0);
                    $this->arrDados["arrMax"][$i] = round($objMedicoes->MAX,0);
                    $this->arrDados["arrMedia"][$i] = round($objMedicoes->MEDIA,0);	
                }
                else
                {
                    $this->arrDados["arrMin"][$i] = round($objMedicoes->MIN,1);
                    $this->arrDados["arrMax"][$i] = round($objMedicoes->MAX,1);
                    $this->arrDados["arrMedia"][$i] = round($objMedicoes->MEDIA,1);	
                }
                $this->arrDados["numLinhasVerticais"]++;
                $i++;
                
        }
       $dadosLineares = json_encode($this->arrDados);            // dados do gráfico de multi linhas
       /*$dadosLineares = '{"one": "Singular sensation",
                            "two": "Beady little eyes",
                            "three": "Little birds pitch by my doorstep"
                        }';*/
       if(isset($dadosLineares)){
           imprimir($dadosLineares);
       }    

No arquivo Acao.php eu tenho essa função imprimir. Pelo o que eu entendi no JSON não pode ter nada de html senão a função getJSON do JQuery não funciona.


include_once 'Consulta.php'; 

// definições para consulta
define("INTERVALO_MES",1,false);                        // intervalo de medição: Medições realizadas num mês especifico
define("INTERVALO_ANO",2,false);                        // intervalo de medição: Medições realizadas num ano especifico
define("INTERVALO_DIA",3,false);                        // intervalo de medição: Medições realizadas num dia especifico
define("INTERVALO_HORAS",4,false);                      // intervalo de medição: Medições realizadas numa hora especifico  


    
    // parâmetros para conexão com banco de dados
    $local="lx";
    $db="iaq";
    $username="rx";
    $pwd="x";
   
    $link = Conexao::getInstance($local, $username, $pwd, $db);
    
    if(!$link)
        die("Erro na conexao com banco de dados.". mysqli_error($link));

    #################################################################################################################################################################

    $mes = (isset($_POST['select_mes']))?($_POST['select_mes']):'';
    $ano = (isset($_POST['select_ano']))?($_POST['select_ano']):'';
    #$dia = 0;

    if($mes!="" && $ano!="")
    //se a escolha for mês e ano a medição sera feita sobre um M~es especifico e $intervalo recebe 1 
    //para indicar no método contrutor o tipo de medição(qual é o intervalo)
        $tipo_intervalo = INTERVALO_MES;				 

    else if($mes=="" && $ano!="")
    //se a escolha for somente o ano a medição sera feita sobre o ano especifico e $intervalo recebe 1 
    //para indicar no método contrutor o tipo de medição(qual é o intervalo)
    $tipo_intervalo = INTERVALO_ANO;

    // local da medição -> $local = ao local escolhdio pelo usuário
    $local_medicao = $_POST['select_local'];

    // grandeza a ser medida(tipo de sensor)
    $tipo_sensor = $_POST['select_medicao'];

    $consulta = new Medicao($ano, $mes, $tipo_sensor);

    // definindo atributo link da classe Consulta
    $consulta->setLink($link);
    $consulta->setMedicao($local_medicao, $tipo_sensor);

    // definindo atributo local da medição da class Consulta
    $consulta->setLocalMedicao($local_medicao);

    // método que fará consultas no banco de dados para gerar gráficos de linha e de setor
    // Parâmetros de entrada: $tipo_intervalo -> intervalo da medição, definidos em mês, ano , dia e hora
    // Retorno: vetor com os dados das da consulta
    $consulta->consultarMedicao($tipo_intervalo);
    
    
    function imprimir($texto){
        echo $texto;
    }

E no javascript está assim

$.getJSON("./Acao.php", function(data){
              alert(data);
         });

Deveria surgir um alert mas o firebug diz que data = null.

Vc tem uma idéia para solucionar isso???

Desde de hjá agradeço.

$dadosLineares = '{"one": "Singular sensation", 
                           "two": "Beady little eyes", 
                            "three": "Little birds pitch by my doorstep" 
                        }';

quando vc testou isso veio certo o json?

verificou se o json gerado esta certo?

nunca usei $.getJSON, geralmente faço o ajax chamar a pagina q eu quero (arquivo.php), nela dou o json_econde() e um echo e ai manipulo o json/string no jascript.

Agora sim ta vindo certo eu mudei meu javascript para isso.

[code]
$("#form").submit(function(){
var dados = $("#form").serialize();

    $.ajax({
        
        type: "POST",
        url:"./Acao.php",
        data: dados,
        success : function(data){
            alert("enviando..."+data);
        }
    });

    return false;
});

$.getJSON("./Acao.php", function(data){
    alert(data.arrMedia);
});
[/code]

A função .ajax() mostra o alert com o resultado da busca no BD. porém existem dois problemas.

1º depois que o documento carrega a primeira vez data é nulo tem como eu chamar a função getJSON só depois de submeter o formulário???
Eu tentei coolocar uma condição do tipo se data!=null então chama getJSON mais não funcionou.

2º Mesmo depois da requisição feita pela função ajax() o alert em getJSON não é exibido.

Alguém tem alguma idéa do que eu posso fazer??? Por favor me ajudem.

Obrigado.