Ajax Jquery вызывает событие ошибки, когда я получаю JSON от Python Flask API - PullRequest
0 голосов
/ 18 октября 2018

Я установил базовый API Python Flask

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 голосов
/ 18 октября 2018

Наконец-то разобрался.

Мне нужно было добавить:

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
0 голосов
/ 18 октября 2018

Может быть просто опечатка, но похоже, что апострофы вокруг вашего параметра url на самом деле являются обратными чертами.

Кроме того, Flask обычно требуется только url: '/test' AFAIK, поскольку вы ссылаетесь на внутренний маршрут Flask,Возможно, все будет по-другому private fetchFrame().Я не уверен, что именно это делает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...