首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用setinterval函数重新加载javascript变量

用setinterval函数重新加载javascript变量
EN

Stack Overflow用户
提问于 2017-01-25 14:52:27
回答 2查看 1.2K关注 0票数 0

我正在尝试使用Google可视化来学习Google计量器,我想在计量器上显示数据,它每秒钟变化一次,并使用一个使用shell_exec函数将变量赋值为秒的命令加载变量,PFB是我的代码。

代码语言:javascript
运行
复制
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秒后被调用时重新加载。

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-08 22:34:12

我使用了两个单独的文件,一个PHP文件从数据库中获取数据(在我的例子中),一个javascript文件使用PHP文件和Ajax从数据库获得响应。

您必须将Ajax添加到您的index.html文件中:

代码语言:javascript
运行
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

Javascript代码:

代码语言: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的量程函数中,做这样的事情:

代码语言:javascript
运行
复制
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文件中:

代码语言:javascript
运行
复制
<?php
/* Get your data */
echo json_encode($table);
?>

希望能帮上忙!

票数 0
EN

Stack Overflow用户

发布于 2017-01-25 14:56:14

当前的问题是您的php代码只执行一次,因此这些值不会被更新:<?php echo json_encode(shell_exec("date +%S")); ?>返回一个值,这个值不会从前端定期更新。

我建议您使用Javascript的Date代替:

代码语言:javascript
运行
复制
var seconds = new Date() / 1000;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41854618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档