【问题标题】:Fetching json data - javascript to python server获取 json 数据 - javascript 到 python 服务器
【发布时间】:2021-07-03 20:29:00
【问题描述】:

我在从 javascript 函数中获取数据时遇到问题

这是我用来获取的代码:

async function postSearchString(searchString) {
    let data = {'searchString': searchString};
    const response = await fetch('http://127.0.0.1:5000/search', {
        method: 'POST',
        mode: "no-cors",
        body: JSON.stringify(data),
        headers: new Headers({
          'content-type': 'application/json'
        })
    });
    if (response.ok) {
        return await response.json();
    }
} 

对于服务器端,我使用 python flask

@app.route('/search', methods=['POST'])
def select_by_country():
    req = request.data.decode('utf8')
    search_string = json.loads(req).get('searchString')
    result = []
    con = sqlite3.connect("example.db")
    cur = con.cursor()
    for row in cur.execute("SELECT destinationCountry FROM roaming_data WHERE destinationCountry LIKE ?", (search_string,)):
        result.append(row)
    return Response(json.dumps({
        "results": result,
    }), mimetype="application/json", status=http.HTTPStatus.OK)

现在,当我使用 postman 测试 api 时,它可以工作,但是当使用前端函数时,response.ok 为 false 并且正文为空

知道为什么吗?

【问题讨论】:

    标签: javascript flask fetch-api


    【解决方案1】:

    问题是您返回一个 json 字符串,但需要从您的 api 返回 json。

    试试:

    from flask import jsonify, make_response
    
    @app.route('/search', methods=['POST'])
    def select_by_country():
        req = request.data.decode('utf8')
        search_string = json.loads(req).get('searchString')
        result = []
        con = sqlite3.connect("example.db")
        cur = con.cursor()
        for row in cur.execute("SELECT destinationCountry FROM roaming_data WHERE destinationCountry LIKE ?", (search_string,)):
            result.append(row)
        return make_response(jsonify({
            "results": result,
        }), 200)
    

    【讨论】:

    • 谢谢,但我仍然有相同的结果:-(
    • @SteveBl 请求此路线和方法时,能否请您发送邮递员输出的屏幕截图。
    【解决方案2】:

    我已将 CORS 添加到我的烧瓶服务器 从 fetch 请求中删除了 mode 参数并且它起作用了

    pip install flask-cors
    

    然后

    from flask_cors import CORS
    
    app = flask.Flask(__name__)
    CORS(app)
    

    【讨论】:

      猜你喜欢
      • 2013-07-31
      • 2017-11-20
      • 1970-01-01
      • 2019-12-13
      • 2016-08-03
      • 2012-11-24
      • 2012-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多