gpt4 book ai didi

javascript - Flask json 响应在 ajax 成功处理程序中失败

转载 作者:太空宇宙 更新时间:2023-11-03 20:28:34 25 4
gpt4 key购买 nike

我有一个运行 Flask 的 Python 服务器和一个运行 JavaScript Ajax 调用的页面,但我在 Ajax 成功处理程序 (.done(…)) 中不断收到错误,无法解析发送给它的 jsonified 响应?

我尝试过 jsonify 字典、字符串以及各种其他方法。似乎没有任何作用。

这是 Python 服务器:

from flask import Flask, render_template, redirect, json, jsonify, request, Response

# Create an instance of Flask
app = Flask(__name__)

@app.route("/")
def home():
return render_template("Page.html")

@app.route("/api/firstname", methods=['POST'])
def firstname():
fname = request.form.get("FirstName")
fnd = f'{fname} can be a given name or a surname.'
jsonResponse = jsonify({"story": fnd})
return jsonResponse

if __name__ == "__main__":
app.run(debug=True)

这是每次都会失败的 JavaScript Ajax 调用:

function LookupFirstName(firstname) {
let fnb = document.getElementById("firstNameBlurb");
fnb.innerText = "003 Researching " + firstname;
$.ajax({
url: "http://localhost:5000/api/firstname",
type: "POST",
data: {
FirstName: firstname
},
dataType: "json"
})
.done(function(data) {
let fnb = document.getElementById("firstNameBlurb");
fnb.innerText = "TEST"; //data; //data.decode("utf-8");
})
.fail(function(jqXHR, textStatus) {
let e = document.getElementById("error");
e.innerText = "J: " + jqXHR.responseText;
e.innerText += "error: " + jqXHR.status + "-" + textStatus;
});
}

我希望它将firstNameBlurb更改为“TEST”,但它会跳转到.fail处理程序并将错误文本更改为J:undefinederror 0-error

最佳答案

这是对我有用的后端修正:

from flask import Flask, render_template, redirect, json, jsonify, request, Response

# Create an instance of Flask
app = Flask(__name__)

@app.route("/")
def home():
return render_template("Page.html")

@app.route("/api/firstname", methods=['POST'])
def firstname():
json_data = request.get_json()
fname = json_data['FirstName']
fnd = f'{fname} can be a given name or a surname.'
jsonResponse = jsonify({"story": fnd})
return jsonResponse

if __name__ == "__main__":
app.run(debug=True)

我没有太多时间,所以我使用简单的 cURL 进行了测试:

curl -X POST -H 'Content-Type: application/json' -d '{"FirstName": "davide"}' http://localhost:5000/api/firstname

输出为:

{
"story": "davide can be a given name or a surname."
}

关于javascript - Flask json 响应在 ajax 成功处理程序中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57658153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com