2017-01-25 8 views
0

Я пытаюсь изучить Google Gauges с визуализацией Google, и я хочу отображать данные в Gauge, которые меняются каждую секунду, и я загружаю переменную с помощью команды PHP, которая присваивает переменную как значение секунды, используя shell_exec функция, PFB мой кодОбновить переменные javascript с помощью функции setinterval

setInterval(function() { 
var memory = parseFloat(<?php echo json_encode(shell_exec("date +%S")); ?>); 
data.setValue(0, 1, memory); 
chart.draw(data, options); 
    }, 1000); 

после того, как функция вызывается через 1 секунду величина memory не обновляется и взяты из parseFloat(<?php echo json_encode(shell_exec("date +%S")); ?>);

Пожалуйста, дайте мне знать, как я сделать memory переменную перезарядку каждый раз функция вызывается после того, как 1 секунду

Заранее спасибо

ответ

0

Я сделал это с помощью два отдельных файлов, то PHP файла, чтобы получить данные из базы данных (в моем случае) и файл JavaScript, что получает ответ из базы данных с использованием файла PHP и Ajax.

Вы должны включить Ajax добавив в файл index.html:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 

Javascript код:

var mysqlData; // Global variable in witch the data will be stored 
setInterval(function() { 
    $.ajax({ 
     url: "php/getdata.php", // file name or path to PHP file 
     dataType: "JSON", 
     data:{}, 
     success: function(x){ 
      mysqlData = x; // Assign the response to global variable mysqlData 
     } 
    }); 
}, 2000); // Run every 2 seconds 

Тогда в функции Google Gauge сделать что-то вроде этого:

function SOC() { 
    // Normal google chart code goes here 
    setInterval(function() { 
     data.setValue(0, 1, mysqlData["SOC"]); // In my case mysqlData is an object which contains the key "SOC" 
     formatter.format(data, 1); // Only needs to be done if google.visualization.NumberFormat have been used 
     chart.draw(data, options); // To redraw the gauge with new data 
    }, 2000); 
} 

В файле PHP:

<?php 
/* Get your data */ 
echo json_encode($table); 
?> 

Надеюсь, это поможет!

+0

Большое спасибо, этот подход помог :-) –

2

В настоящее время проблема, что ваш код PHP выполняется только один раз, то значения, следовательно, не обновляется: <?php echo json_encode(shell_exec("date +%S")); ?> возвращает единственное значение, которое не обновляется периодически из ваш передний конец.

Я хотел бы предложить вам использовать в JavaScript Date вместо:

var seconds = new Date()/1000; 
+0

Antony, спасибо за ответ, но мое требование - загрузить переменную из php-кода в будущем, я использовал команду date в PHP как тестовые данные, есть способ обновить эти данные без перезагрузки моя полная страница? –

+0

@someshgarje узнайте об Ajax ... – epascarello

+0

Вы можете использовать Ajax и создать страницу 'getUpdatedValue.php' php, которая вернет только новое значение. – Antony

 Смежные вопросы

  • Нет связанных вопросов^_^