【问题标题】:Ajax Jquery hitting error event when I receive JSON from Python Flask API当我从 Python Flask API 接收 JSON 时,Ajax Jquery 命中错误事件
【发布时间】:2018-10-18 21:55:46
【问题描述】:

我已经设置了一个基本的 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"

【问题讨论】:

    标签: python jquery ajax flask


    【解决方案1】:

    可能只是一个错字,但看起来你的 url 参数周围的撇号实际上是反引号。

    此外,Flask 通常只需要url: '/test' AFAIK,因为您指的是 Flask 内部路由。不过,private fetchFrame() 可能会有所不同。我不确定那到底是做什么的。

    【讨论】:

    • 它实际上是打字稿并被转译成javascript。反引号替换为标准单引号,私有替换为“功能”。给定的代码来自简化版。我使用字符串插值来生成更长的 url。
    • 您能否为我们输出完整的控制台错误消息以及您在 Flask 中使用app.run(debug=True) 得到的信息?
    • 感谢您的帮助丹尼斯。原来是跨域问题。我已经发布了我的解决方案。
    【解决方案2】:

    终于想通了。

    我需要补充:

    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
    

    【讨论】:

      猜你喜欢
      • 2023-03-10
      • 2018-05-14
      • 1970-01-01
      • 2014-05-26
      • 2017-11-05
      • 2022-06-15
      • 2010-09-09
      • 2013-12-30
      • 2015-01-14
      相关资源
      最近更新 更多