Die Flask-App akzeptiert JSON-Daten vom Frontend, die Flask-Anfrage akzeptiert sie jedoch nicht. Es enthält keine Daten und funktioniert auch nach Änderung vieler Funktionen nicht.
JS-Code
$(function(){
$("#test").click(function(){
$.ajax({
url: "{{ url_for('main.getjson') }}",
type: "POST",
data: JSON.stringify({
"n1": "test1",
"n2": "test2",
"n3": "test3"
}),
dataType: "json",
success: function(data){
var a = data.user
var texthtml = "<p>" + a + "</p>"
$("#result").html(texthtml)
}
});
});
});
Funktionen im Flask anzeigen:
@main.route('/getjson', methods = ['GET', 'POST'])
def getjson():
a = request.json
if a:
return jsonify(user = "Right")
return jsonify(user = "error")
Bestimmt nur, ob request.json existiert, aber die zurückgegebene Zeichenfolge ist immer „error“. In request.json steht immer null. Später habe ich request.args.get() geändert, aber es hat auch nicht funktioniert. Was habe ich falsch gemacht? Ich bitte aufrichtig um Rat.
找到答案了,仅仅是在jquery部分出了问题。$.ajax的参数contentType,默认是 "application/x-www-form-urlencoded",需要把这个参数设置成application/json。
参考:https://flask.readthedocs.io/...
http://stackoverflow.com/ques...
jquery的ajax发送data的时候不需要JSON.stringify.他会自动处理.
根据你的描述,你的已经把问题找到了,为什么不继续尝试一下,或者看下文档
输出结果
request.json很奇葩,确实没数据,但是它是可以用的,你这里没用的原因如下:
所以我只是成功使用过一次request.json,后来再也没有成功过,因为它很神奇,如果可以找一个替代request.json吧。