Я делаю сайт, который показывает данные из базы данных MySQL в графах Морриса. В основном у меня есть база данных, которая получает новые измерения каждую минуту, и я пытаюсь показать эти изменения в реальном времени, не перезагружая всю страницу. Я сократил свой код на этот вопрос, но здесь в основном то, что у меня есть:Как я могу постоянно обновлять переменную PHP без обновления страницы?
PHP код:
<?php
while($measurement = mysqli_fetch_array($result)){
$data += $measurement['data'];
}
?>
И сценарий:
function data() {
var ret = [];
ret.push({
y: 'Today',
a: <?php echo $data; ?>
});
return ret;
}
var graph = Morris.Bar({
element: 'graph',
data: data(),
xkey: 'y',
ykeys: ['a'],
labels: ['random label']
});
function update() {
graph.setData(data());
}
setInterval(update, 60000);
График затем показан в DIV с id "graph". Поэтому проблема заключается в том, что функция обновления не обновляет график новыми данными, так как данные не обновляются. Я слышал, что могу каким-то образом создать функцию PHP и постоянно запускать ее с помощью Ajax и обновить переменную $ data, но я понятия не имею, как это сделать.
Чтобы обновить график, мне нужно перезагрузить всю страницу, и это отлично работает, используя метатег, который обновляет страницу каждые 60 секунд, но это кажется плохим решением.
Я также попытался поставить код в отдельном PHP файл и запустить что, используя этот код:
var auto_updater = setInterval(
(function() {
$("#graph").load("data.php");
}), 60000);
Это также работает хорошо, но проблема в том, что он перерисовывает весь граф и что вызывает полоса прокрутки на моем сайте, чтобы сходить с ума. Я хочу обновить переменную данных в Morris.Bar, но не все. Любая помощь будет оценена по достоинству.
Спасибо за ответ, но я не уверен, что включить в data.php, поскольку я не знаю JSON или как заставить PHP возвращать что-то подобное. Я знаю, как сделать все это, но не так, как только возвращать данные. Я просто делаю функцию типа data() из своего сообщения и вызываю ее в data.php или что-то в этом роде? – dansan
просто добавьте файл 'data.php' на свой сервер, который получит данные, как вы привыкли, и' echo 's в формате, который я показывал во втором блоке кода (не возвращайте HTML, только часть JSON) – sol
Я просто эхо все это как строка? Как я могу отгонять скобки, не превращая их в строку? – dansan