我已经建立了基本的Python Flask API
import flask
from flask import jsonify
from camera_controller import camera_controller
app = flask.Flask(__name__)
app.config["DEBUG"] = True
app.config["JSONIFY_PRETTYPRINT_REGULAR"] = False
app.register_blueprint(camera_controller, url_prefix='/camera')
@app.route('/test', methods=['GET'])
def test():
return jsonify({"result": "OK"})
app.run()
我已经在Chrome,FF和IE中对此进行了测试 响应标题:
Content-Length: 21
Content-Type: application/json
Date: Thu, 18 Oct 2018 12:25:18 GMT
Server: Werkzeug/0.14.1 Python/3.6.2
Status Code: 200 OK
响应正文:
{
"result": "OK"
}
然后我从Jquery发出了一个请求,但是即使响应状态为200,错误函数也正在处理响应:
private fetchFrame() {
$.ajax({
url: `http://localhost:5000/test`,
method: "get",
cache: false,
success: function (response) {
},
error: function (e) {
console.log(e);
}
});
}
例外内容:
readyState: 0
status: 0
responseText: ""
statusText: "error"
答案 0 :(得分:0)
可能只是一个错字,但您的url参数周围的撇号实际上是反引号。
此外,Flask通常只需要url: '/test'
AFAIK,因为您指的是Flask内部的路由。不过可能不同private fetchFrame()
。我不确定到底能做什么。
答案 1 :(得分:0)
最后弄清楚了。
我需要添加:
Access-Control-Allow-Origin: * to the response headers
所以我按如下方式编辑了我的方法:
@app.route('/test', methods=['GET'])
def test():
response = flask.Response(json.dumps({"result": "OK"}), content_type='application/json; charset=utf-8');
response.headers.add('Access-Control-Allow-Origin', '*')
return response