2016-02-28 4 views
0

Мой PHP работает нормально, и я, кажется, получить обратно правильные данные в формате JSON для ФЛОТ, но я все еще получаю пустую диаграмму: -/Что случилось с моими данными FLOT?

Вот PHP:

foreach($result as $row) { //or whatever 
$dataset1[] = array((int) $row['INDX'], (int) $row['RUNTIME']); 
} 
echo json_encode($dataset1); 

Вот образец JSON, который он возвращает: [[31,2303], [113,5697], [201,4485], [151, 4404], [192, 268], [84, 1022], [13,6003] [68,3628], [12,2115]]

Вот функция для построения:

$(function() { 
    $.plot($("#dashboard_div"), apudata); 
    console.log(apudata); 
}); 

В консольном журнале отображается правильно отформатированный JSON, как указано выше. Я могу вырезать и вставлять из журнала консоли в литеральную переменную для этой функции, и она работает, но передача JSON в качестве переменной - нет.

Рекомендации? Помощь?

+0

как вы получаете apudata в JavaScript? – Peter

+0

ajax: var apudata = $ .ajax ({ url: "php/chartjs.php", dataType: "json", async: false }). ResponseText; – Iain

+0

Это когда я получил свою работу. Если ваш Json отформатирован правильно, просто используйте этот метод Ajax для ввода данных. Когда я вернусь домой, я напишу правильный ответ. http://stackoverflow.com/questions/26176677/cant-get-data-into-flot-with-ajax?noredirect1_comment41052807_26176677 – Peter

ответ

0

Попробуйте использовать приведенный ниже код. Установите интервал 1000 (мс), чтобы часто обновлять график. Это просто (очень слегка отредактированный) код из одной из моих предыдущих сообщений, которые я добавил в комментарии.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
    <html> 
     <head> 
     <title>AJAX FLOT</title> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
     <script language="javascript" type="text/javascript" src="../../jquery.js"></script> 
     <script language="javascript" type="text/javascript" src="../../jquery.flot.js"></script> 
     <script language="javascript" type="text/javascript" src="../../jquery.flot.time.js"></script> 
     </head> 
     <body> 
     <div id="placeholder" style="width: 100%;height: 600px;"></div> 
     <div id="div" style="width: 100%; height: 100px;"></div> 
     <script type="text/javascript"> 
    var options = { 
     lines: { 
     show: true 
     }, 
     points: { 
     show: true 
     }, 
     xaxis: { 
     mode: "time" 
     } 
    }; 
window.setInterval(function(){ 
    $.getJSON('http://localhost/data.php', function (csv) { 

     dataOne = csv; 

     var plot = $.plot($('#placeholder'), [dataOne], options); 


    }); 
}, 1000); 
    </script> 
    </html> 
+0

Спасибо, но не радость. : -/ – Iain

+0

Я обновил код, но все, что я сделал, это обернуть dataOne в квадратных скобках. – Peter

0

Не уверен, если это имеет значение, но ФЛОТ документы говорят, просто передать селектор в виде строки в $.plot(), а не объект JQuery. Таким образом, вместо

$.plot($('#dashboard_div'), apudata); 

попробовать

$.plot('#dashboard_div', apudata); 
Смежные вопросы