Python Flask获取要显示的json数据
我目前正在尝试显示每5秒更新一次的值列表到sqlite数据库。
我可以使用以下代码将结果转换为JSON格式:
@app.route('/_status', methods= ['GET', 'POST']) def get_temps(): db = get_db() cur = db.execute('select sensor_name, temp from cur_temps ORDER BY sensor_name') #cur_temps = cur.fetchall() return jsonify(cur.fetchall())
通过浏览器导航到网页返回
{ "BoilerRoom": 26.44, "Cylinder1": 56.81, "Cylinder2": 39.75, "Cylinder3": 33.94 }
我想定期在网页上更新这些数据,而无需再次加载整个页面。 我陷入了第一道障碍,无法显示实际数据。 我正在使用的HTML代码是
{% extends "layout.html" %} {% block body %} $(function() { $("#submitBtn").click(function() { $.ajax({ type: "GET", url: $SCRIPT_ROOT + "_status", contentType: "application/json; charset=utf-8", success: function(data) { $('#Result').text(data.value); } }); }); }); {% endblock %}
我从示例中选择了代码,但我需要一个指针。
解决了!!
新的HTML代码
function get_temps() { $.getJSON("_status", function (data) { $('#Cyl1').text(data.Cylinder1) $('#Cyl2').text(data.Cylinder2) $('#Cyl3').text(data.Cylinder3) $('#BRoom').text(data.BoilerRoom); } ); } setInterval('get_temps()', 5000); Location Temperature Cylinder Top Cylinder Middle Cylinder Bottom Boiler Room
你的AJAX调用应该自动检测JSON响应,但明确地告诉jQuery它没有坏处:
$.ajax({ type: "GET", url: $SCRIPT_ROOT + "_status", dataType: 'json', success: function(data) { $('#Result').text(data); } );
contentType
参数仅用于POST请求,告诉服务器您发送的数据类型。
data
对象包含返回的Flask jsonify()
响应; 在这种情况下,它将是一个带有BoilerRoom
等键的JavaScript对象。
由于您是通过GET请求加载JSON,因此您也可以使用jQuery.getJSON()
方法 :
$.getJSON( $SCRIPT_ROOT + "_status", function(data) { $('#Result').text(data); } );
这与$.ajax()
调用完全相同,但您可以省略type
和dataType
参数, url
和success
参数只是位置元素。