gpt4 book ai didi

javascript - 如何在页面上实时运行谷歌图表的客户端上显示服务器返回的 JSON?

转载 作者:行者123 更新时间:2023-11-28 05:11:33 26 4
gpt4 key购买 nike

我不是一个 javascript 开发人员,甚至不是 ajax 专家,只是一个非副桌面开发人员,如果您能向我展示如何将 MCU 返回 json 数据连接到使用在客户端上运行的 google gauge 的网页,我将非常感激在家里的本地网络上。

所以我实现了一个简单的基于 Arduino 的网络服务器,它返回以下格式的数据:

{“arduino”:
[
{“location”:”outdoor”,”temperature”:”15.55″},
{“location”:”outdoor”,”humidity”:”15″}
]
}

我希望能够显示实时温度,而不必刷新整个页面:我遇到了 google gauge example .

我修改了下面链接中的示例以显示温度和湿度单独的仪表:

<html>
<head>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
google.charts.load('current', {'packages':['gauge']});
google.charts.setOnLoadCallback(drawGauge);
var gaugeOptions = {min: 0, max: 280, yellowFrom: 200, yellowTo: 250,
redFrom: 250, redTo: 280, minorTicks: 5};
var gauge;

function drawGauge() {
gaugeData = new google.visualization.DataTable();
gaugeData.addColumn('number', 'Temperature');
gaugeData.addColumn('number', 'Humidity');
gaugeData.addRows(2);
gaugeData.setCell(0, 0, 120);
gaugeData.setCell(0, 1, 80);

gauge = new google.visualization.Gauge(document.getElementById('gauge_div'));
gauge.draw(gaugeData, gaugeOptions);
}

function changeTemp(dir) {
gaugeData.setValue(0, 0, gaugeData.getValue(0, 0) + dir * 25);
gauge.draw(gaugeData, gaugeOptions);
}

function changeHumid(dir) {
gaugeData.setValue(0, 1, gaugeData.getValue(0, 1) + dir * 20);
gauge.draw(gaugeData, gaugeOptions);
}
</script>
</head>
<body>
<div id="gauge_div" style="width:280px; height: 140px;"></div>
<small>Change</small>
<input type="button" value="Temperature" onclick="changeTemp(1)" />&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="button" value="Humidity" onclick="changeHumid(1)" />
</body>
</html>

现在我希望更改温度和更改湿度函数应在 5 秒后执行,显示通过执行 MCU 蜜蜂服务器 URL 返回的 json 中的最新数据?我怎样才能实现它?

最佳答案

好吧,我想通了,经过大量的挖掘,我终于在假期结束之前有了一些工作。

下面的代码可以工作并显示我的谷歌仪表中的最新值,并且每 15 秒刷新一次,我可以将相同的原理应用于我在开篇文章中作为示例放置的 json 数据。

  <script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js'></script>
<script type='text/javascript' src='https://www.google.com/jsapi'></script>
<script type='text/javascript'>

// set your channel id here
var channel_id = 166617;
// set your channel's read api key here if necessary
var api_key = 'ZCUB611J8M8ELM9M';
// maximum value for the gauge
var max_gauge_value = 70;
// name of the gauge
var gauge_name = 'Temperature';

// global variables
var chart, charts, data;

var public_key = 'dZ4EVmE8yGCRGx5XRX1W';

// load the google gauge visualization
google.load('visualization', '1', {packages:['gauge']});
google.setOnLoadCallback(initChart);

// display the data
function displayData(point) {
data.setValue(0, 0, gauge_name);
data.setValue(0, 1, point);
chart.draw(data, options);
}

// load the data
function loadData() {
// variable for the data point
var p;

// JSONP request
var jsonData = $.ajax({
url: 'https://data.sparkfun.com/output/' + public_key + '.json',
data: {page: 1},
dataType: 'jsonp',
}).done(function (results){

// get the data last value
p = results[results.length - 1].tempf;

// if there is a data point display it
if (p) {
displayData(p);
}

});
}

// initialize the chart
function initChart() {

data = new google.visualization.DataTable();
data.addColumn('string', 'Label');
data.addColumn('number', 'Value');
data.addRows(1);

chart = new google.visualization.Gauge(document.getElementById('gauge_div'));
options = {width: 120, height: 120, greenFrom: 10, greenTo: 29, redFrom: 41, redTo: 70, yellowFrom:30, yellowTo: 40, minorTicks: 5};

loadData();

// load new data every 15 seconds
setInterval('loadData()', 15000);
}

</script>

关于javascript - 如何在页面上实时运行谷歌图表的客户端上显示服务器返回的 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41334559/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com