我是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开始说明。
我尝试过解决方案:
.done()
并使用.ajax
)callback=?
)python
命令代替gunicorn
但它仍然不起作用,有人可以帮助我找出问题所在吗?
答案 0 :(得分:1)
app.run(host='0.0.0.0', port=8000)
localhost:8000/test
或getJSON
之间获取ajax
的方式不同。它存在 'access-control-allow-origin' 的问题。在烧瓶中,您可以使用包flask-CORS来完成工作。答案 1 :(得分:0)
你的JS中有一些错误。
最明显的是,您要求的网址无效。 0.0.0.0是您可以绑定服务器的接口,但它不是您可以请求的URL。使用localhost或192.168.0.1。
我想说另一个主要错误是URL和以下选项对象之间没有逗号,但实际上getJSON
没有选择参数。完全删除该对象。