无法通过AJAX和Flask获取JSON

0 投票
1 回答
1128 浏览
提问于 2025-04-19 04:14

我正在尝试制作一个简单的网页应用程序,用来显示日志。在网页这边,我使用的是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));

或者你可以发送一些更有意义的内容。

撰写回答