无法使用getJSON

时间:2017-08-29 07:12:07

标签: javascript jquery python json flask

我是Javascript的新手,我遇到了以下问题。所以我做了一个简单的Flask API返回一个简单的json

Flask代码:

from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/test')
def test():
    return jsonify({"result":"wt is works!"})

if __name__=="__main__":
    app.run()

我使用gunicorn -k gevent -w 5 main:app运行它,当我在浏览器中检查localhost:8000/test时,它通常返回json

但是当我尝试使用Jquery获取它时,它什么也没有返回。我的HTML没有从localhost:8000/test

获得任何价值

我当前的HTML代码:

<html>
    <head>
        <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
        <script type=text/javascript>
            $(document).ready(function(){
                $.getJSON(
                    "http://localhost:8000/test",
                    {format: "json"})
                    .done(
                        function(data) {
                            var plot_id = data.result;
                            $("#retval").html( "<strong>" + plot_id + "</strong>" );
                        }
                    );
            });
        </script>
    </head>
    <body>
        <div id="retval"></div>
    </body>
</html>

但是,当我更改网址并尝试从其他API获取数据时,请从https://jsonplaceholder.typicode.com/posts/1开始说明。

我尝试过解决方案:

但它仍然不起作用,有人可以帮助我找出问题所在吗?

2 个答案:

答案 0 :(得分:1)

  • 定义要用作服务器端口的端口:app.run(host='0.0.0.0', port=8000)
  • 更重要的是,浏览器在您的函数localhost:8000/testgetJSON之间获取ajax的方式不同。它存在 'access-control-allow-origin' 的问题。在烧瓶中,您可以使用包flask-CORS来完成工作。

答案 1 :(得分:0)

你的JS中有一些错误。

最明显的是,您要求的网址无效。 0.0.0.0是您可以绑定服务器的接口,但它不是您可以请求的URL。使用localhost或192.168.0.1。

我想说另一个主要错误是URL和以下选项对象之间没有逗号,但实际上getJSON没有选择参数。完全删除该对象。