Não é possível obter dados em flot com AJAX

Estou usando o código abaixo para gravar dados em flot e, quando eu imprimo dataOne, ele retorna valores corretamente formatados para flot, no entanto, quando eu configurá-lo como dados para flot para gráfico, flot forma um gráfico, mas não tem pontos de dados ?

   AJAX FLOT      
var options = { lines: { show: true }, points: { show: true }, yaxis: { min: "0", max: "1023" }, xaxis: { mode: "time" } }; function update() { $.ajax({ url: "http://localhost/data.php", context: document.body }).done(function(response) { dataOne = response; var d = "[" + dataOne + "]"; var plot = $.plot($('#placeholder'), [d], options); setTimeout(update, 1000); }); } update();

Finalmente, para a raiz do problema. Se for válido JSON, dataOne deve ser uma matriz de arrays:

 [[1412393775000, 277], [1412393777000, 277], [1412393778000, 277]] 

Observe os suportes extras. Verifique seu console.log cuidado.

Fazendo isso:

 var d = "[" + dataOne + "]"; 

em JavaScript, converte-o automaticamente em uma string.

O que você precisa é uma matriz de matriz de matriz (o interno é mais um ponto, o segundo é uma série, o externo é uma coleção de séries):

 var d = [dataOne]; 

E então, apenas

 var plot = $.plot($('#placeholder'), d, options); 

Para aqueles que desejam fazer algo parecido, aqui está o código que eu costumava fazer para que ele funcionasse. 🙂

Primeiro, a página que produziu o valor que o arquivo PHP coletado estava incorreto. O Arduino estava usando o AJAX para atualizar o valor a cada segundo, mas percebi que isso era estúpido, pois a página era chamada a cada segundo da chamada AJAX principal que chamava data.php, que então chamou essa página. Então removi o AJAX do código Arduino Web Server.

Como o código não estava funcionando e passava horas tentando, comecei a procurar alternativas. Em highcharts.js encontrei um código AJAX e decidi tentar. Aqui está o código com o qual acabei:

 < !DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">   AJAX FLOT       

Depois disso, tive que obter o data.php funcionando corretamente. Eu tive um problema onde

 file_get_contents 

Não só obteria o resultado do Arduino, mas também muitas das tags que o cercam. Isso encheu meus dados. Então eu desisti com as tags html apropriadas e logo imprimi o valor simples. Então, se você foi à fonte da página da saída do Arduino, não há tags que envolvam o valor, tudo que você vê é um número. Então isso interrompeu essa questão.

Aqui está o código php que eu uso para formatar os valores:

 < ?php $file = "data.txt"; $webpage = "http://192.168.1.177/"; $t = time() * 1000; $current = file_get_contents($file); $data = file_get_contents($webpage); if ($current < "1") { $current .= '[[' . $t . ', ' . $data . ']]'; file_put_contents($file, $current); echo $current; } else { $cut = substr($current, 0, -1); $cut .= ', [' . $t . ', ' . $data . ']]'; file_put_contents($file, $cut); echo $cut; } ?> 

Para obter os dados nos suportes apropriados, você pode ver que, quando nenhum dado está presente no arquivo, a instrução if não inclui uma vírgula e espaço, porque não há outro dataset para se separar. Assim que um valor estiver no arquivo, eu uso substr para se livrar do último suporte contendo, então anexe os vírgulas, espaço e depois os valores, com o suporte contendo colocar novamente no final dos dados onde deveria estar.

Enfim, isso acabou funcionando como um sonho. Obrigado por todos os que ajudam 🙂