自动刷新无法在JavaScript中运行

时间:2017-07-20 12:41:48

标签: javascript jquery setinterval

我尝试使用jQuerycircularchart绘制圆形标尺,我能够制作它。

我希望javascript的setInterval()函数自动刷新该值,以便仪表值自行更新而无需手动刷新。

但是setinterval()功能根本不起作用。

我不想刷新整个页面或html的主体。

我只想刷新特定的circleChart#0函数。

需要你的帮助。

这是circle.html     

<body>
  <div class="circleChart" id="0"></div>
  <div class="circleChart" id="1" data-value="77"></div>
  <script src="{{ url_for('static', filename='jquery-1.12.4.min.js') }}"></script>
  <script src="{{ url_for('static', filename='circleChart.js') }}"></script>
  <script>
    $(".circleChart#1").circleChart();
    $(".circleChart#0").circleChart({
      size: 200,
      value: {{temperature}},
      text: 0,
      onDraw: function(el, circle) {
        circle.text(Math.round(circle.value) + "'C");
      }
    });


    setInterval(function() {
      $("#0").circleChart({
        value: {{temperature}},
        onDraw: function(el, circle) {
          circle.text(Math.round(circle.value) + "'C");
        }
      });
    }, 2000);
  </script>
</body>

</html>

这是我的python代码(main.py)

#!/usr/bin/python
from flask import Flask, render_template
app = Flask(__name__)


import os
import glob
import time

os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')

base_dir = '/sys/bus/w1/devices/'
device_folder = glob.glob(base_dir + '28*')[0]
device_file = device_folder + '/w1_slave'

def read_temp_raw():
    f = open(device_file, 'r')
    lines = f.readlines()
    f.close()
    return lines

def read_temp():

    lines = read_temp_raw()
    while lines[0].strip()[-3:] != 'YES':
        time.sleep(0.2)
        lines = read_temp_raw()
        equals_pos = lines[1].find('t=')
        if equals_pos != -1:
        temp_string = lines[1][equals_pos+2:]
        temp_c = float(temp_string) / 1000.0
        temp_f = temp_c * 9.0 / 5.0 + 32.0
        return temp_c, temp_f

 @app.route("/")
 def main():
      temperature , humidity = read_temp()
      templateData = {
        'temperature' : temperature,
        'humidity': humidity
         }
      return render_template('circle.html', **templateData)

 if __name__ == "__main__":
    app.run(host='0.0.0.0', port=80, debug=True)

1 个答案:

答案 0 :(得分:2)

假设su是某种模板变量,那么(通常)只会在从模板生成页面时对其进行一次评估。

您需要某种AJAX调用来获取更新的温度值。