当我从Python Flask API接收JSON时,Ajax Jquery遇到错误事件

时间:2018-10-18 12:44:00

标签: python jquery ajax flask

我已经建立了基本的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"

2 个答案:

答案 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