2017-08-29 55 views
1

我是Javascript中的新成员,并且出现以下问题。所以,我做一个简单的瓶API返回一个简单的JSON无法使用getJSON从Flask Rest API获取Json

瓶代码:

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> 

但是,当我更改URL,并尝试从另一个API获取数据,让来自https://jsonplaceholder.typicode.com/posts/1它的工作原理说。

我试过的解决方案来源:

运行

但它仍然无法正常工作,有人可以帮助我租赁来找出问题所在?

回答

1
  • 定义端口用作服务器端口:app.run(host='0.0.0.0', port=8000)
  • 更重要的是,浏览器的方式获得您的localhost:8000/test功能与getJSONajax是不同的。它有一个关于'access-control-allow-origin'的问题。在烧瓶中,您可以使用包装flask-CORS完成工作。
+0

哇,烧瓶-CORS解决了我的问题:)直到现在我才知道。谢谢 – malioboro

0

你的JS有几个错误。

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

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

+0

对不起,有关URL,我混了我的代码。我已将其更改为localhost并放置逗号。但它仍然不起作用。我应该删除什么? '格式'?我刚刚试图删除它,它仍然不起作用 – malioboro

+0

我已更新我的代码,修复'localhost'和逗号 – malioboro

+0

您需要进行一些调试。请求是否完全针对您的Flask应用程序?你能看到它在浏览器调试工具中还是在Flask控制台本身?如果是这样,返回的是什么? –