我将尝试创建一个用于监控系统活动的Web应用程序,并使用Flask作为我的CMS。更具体地说,我现在卡在了尝试在页面不刷新的情况下定期更新系统信息上。目前,我正在通过以百分比形式检索本地信息来测试Web应用程序。
我创建了一个名为“/refresh”的路由,并以JSON格式添加了本地信息:
数据看起来是这样的:
我创建了一个名为“/refresh”的路由,并以JSON格式添加了本地信息:
@app.route('/refresh')
def refreshData():
systemInfo = {'cpuload': si.getCPU(), 'memload': si.getMEM(), 'diskload': si.getDiskSpace()}
return jsonify(systemInfo)
数据看起来是这样的:
{
"cpuload": 4.3,
"diskload": 0.7,
"memload": 27.8
}
目前,我正在使用Flask的变量来显示模板中的信息,但我想在HTML脚本中访问JSON数据并将其设置为HTML元素,并定期更新。我尝试过使用knockout,但也无法使其正常工作。我的模板如下所示:
<ul id='sysInfo'>
<li>Hostname: {{ sysInfo[0] }}</li>
<li>CPU Core Count: {{ sysInfo[1] }}</li>
<script type='text/javascript' src="http://code.jquery.com/jquery.min.js"></script>
<script type='text/javascript' src="http://knockoutjs.com/downloads/knockout-3.1.0.js">
function update() {
$.getJSON('/refresh', function(data) {
$('#cpu').html(data[cpuload]);
window.setTimeout(update, 5000);
});
}
</script>
<li>
<div id="progress">
<span id="percent">CPU usage: <div id="cpu"></div>%</span>
<div style ='height: 20px; background-color: green; width: {{ cpuLoad }}%;'></div>
</div>
</li>
我知道HTML中的脚本实际上并没有什么意义,但基本上我只想使用getJSON(或任何最优解),获取数据并将该数据放入我的HTML中。