我是 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>
但是当我更改 url 并尝试从另一个 API 获取数据时,比如说从 https://jsonplaceholder.typicode.com/posts/1它有效。
我试过以下解决方案:
- Python Flask get json data to display (不使用
.done()
并使用.ajax
) - External API GET() request using jQuery (使用
callback=?
) - 还尝试使用
python
命令而不是gunicorn
运行
但是还是不行,谁能帮我看看是什么问题?
最佳答案
- 定义要用作服务器端口的端口:
app.run(host='0.0.0.0', port=8000)
- 更重要的是,浏览器在函数
getJSON
或ajax
之间获取localhost:8000/test
的方式是不同的。它有一个关于'access-control-allow-origin' 的问题。在 flask 中,您可以使用包 flask-CORS完成工作。
关于javascript - 无法使用 getJSON 从 Flask Rest API 获取 Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45932884/