Walczę już jakiś czas i nie potrafię poradzić sobie z takim problemem.
Mam plik html który rysuje wykres, pobiera dane wygenerowane plikiem dane.php i rysuje wykres.
<!doctype html> <!-- Most basic sample showing the c3js sample in it's most basic form. --> <html> <head> <meta charset="utf-8"> <link href="assets/css/c3.min.css" rel="stylesheet" type="text/css"> </head> <body> <!-- Load the javascript libraries --> <br> <!-- Initialize and draw the chart --> <script type="text/javascript"> var chart = c3.generate({ bindto: '#chart', data: { x: 'x', url: 'dane.php'}, size: { height: 566}, point:{ show: false }, grid: { y: { lines: [ {value: 80, text: '80 Stopni C', position: 'middle'}, {value: 0, text: '0 Stopni C', position: 'middle'} ] } }, axis: { x: {label: { text: 'Czas zapisu'}, type: 'category', tick: { rotate: 15, multiline: false,culling: { max: 25},fit: true }}, y: { label: 'Temperatura C', lines: [{value: 0, text: 'Lable 1'}]}, //y2: { show: true, label: 'Temperatura C', lines: [{value: 0, text: 'Lable 1'}]} } }); </script> </body> </html>
Chciałbym teraz zrobić aby dane były dynamicznie odświeżane co pewien czas.
Zmodyfikowałem kod tak.
<!doctype html> <!-- Most basic sample showing the c3js sample in it's most basic form. --> <html> <head> <meta charset="utf-8"> <link href="assets/css/c3.min.css" rel="stylesheet" type="text/css"> <script language=javascript> // tworzymy zmienna var object = null; try { object = new XMLHttpRequest(); } catch(e) { try { object = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e2) { try { object = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e3) { alert("Niestety Twoja przeglądarka nie obsługuje AJAXA"); } } } function getData(dataSource, divID) { if (object.readyState==4 || object.readyState==0) { var obj = document.getElementById(divID); // czyta z pliku lub wykonuje skrypt object.open("POST", dataSource); object.onreadystatechange = function() { if (object.readyState == 4 && object.status == 200) obj.innerHTML= object.responseText; } object.send(null); } } // w ponizszej funkcji wywolujemy funkcje getData z odpowiednimi parametrami // oraz wywolujemy ja sama rekurencyjnie po co okreslony czas (w naszym wypadku 1000 ms) function odswiezaj() { getData('dane.php','mojDIVIK'); setTimeout("odswiezaj()", 1000); } </script> </head> <body> <!-- Load the javascript libraries --> <br> <!-- Initialize and draw the chart --> <script type="text/javascript"> var chart = c3.generate({ bindto: '#chart', data: { x: 'x', url: 'dane.php'}, size: { height: 566}, point:{ show: false }, grid: { y: { lines: [ {value: 80, text: '80 Stopni C', position: 'middle'}, {value: 0, text: '0 Stopni C', position: 'middle'} ] } }, axis: { x: {label: { text: 'Czas zapisu'}, type: 'category', tick: { rotate: 15, multiline: false,culling: { max: 25},fit: true }}, y: { label: 'Temperatura C', lines: [{value: 0, text: 'Lable 1'}]}, //y2: { show: true, label: 'Temperatura C', lines: [{value: 0, text: 'Lable 1'}]} } }); </script> <script language=javascript> odswiezaj(); </script> </body> </html>
Niestety nie potrafię tego połączyć na stronie wyświetla się wykres a pod spodem dane.
Wydaje mi się że trzeba by jakoś połączyć ten kawałem kodu
var chart = c3.generate({ bindto: '#chart', size: { height: 566}, point:{ show: false },
Proszę o jakąś wskazówkę która pomogła by mi rozwiązać problem.