无法通过AJAX和Flask获取JSON
我正在尝试制作一个简单的网页应用程序,用来显示日志。在网页这边,我使用的是Python 3.4和Flask,而在客户端则是一个简单的网页表单,配合Ajax来使用。
Flask:
import json
from flask import Flask, jsonify, render_template, request
app = Flask(__name__)
@app.route('/json_test', methods=['GET'])
def json_test():
return open('log.json').read()
@app.route('/')
def index():
return render_template('layout.html')
if __name__ == '__main__':
app.run(debug=True)
这是我的HTML表单
<!DOCTYPE html>
<script type=text/javascript src="{{
url_for('static', filename='jquery.js') }}"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="{{
url_for('static', filename='jquery.js') }}">\x3C/script>')</script>
<script type=text/javascript>
$LOG = {{ request.script_root|tojson|safe }};
</script>
<script type=text/javascript>
$(function() {
$('a#log').bind('click', function() {
$.getJSON($LOG + '/json_test',
function(data){
$("#logs").text(data.result);
});
return false;
});
});
</script>
<p>
<span id=logs>Logs should be here</span>
<a href=# id=log>take log</a>
</p>
</html>
还有我的JSON示例:
{
"data":
{
"misc":
[
{
"name" : "JSON 1",
"type" : "1"
},
{
"name" : "JSON 2",
"type" : "2"
}
]
}
}
我想每5秒发送一部分日志。为此,我打算使用JavaScript的setInterval函数。这样做对吗?
1 个回答
0
你的JSON数据里没有result
这个键。你有一个data
的键。
把data.data
的结果放到<span>
里,只会显示文本[object Object]
,而不是你想要的实际文本。你可以试着把这个对象转换回JSON文本,使用JSON.stringify()
:
$("#logs").text(JSON.stringify(data.data));
或者你可以发送一些更有意义的内容。