我正在尝试使用JSON将用户输入传递到烧瓶python文件中。 这是html正文中的citizins输入元素:
<form class="networkform" method="POST">
<input name="citizens" maxlength="15" class="InputStyle" required>
<button type="submit" style="height: 40px; width: 180px; background-color: grey; color:white">send</button>
</form>
这是html文件中的jQuery函数:
$(".networkform").on('submit', function(e){
alert("submit is working")
$.ajax({
data :
{
'citizens' : $("citizens").val(),
},
type : 'POST',
url : '/Dash'
})
.done(function(data){
$(".outerDiv").hide()
})
e.preventDefault();
});
这是.py文件中的函数:
@app.route('/Dash', methods=['POST'])
def Dash():
if request.method == 'POST':
print("inside post")
num_citizins = request.form['citizens']
print(num_citizins)
return jsonify({"msg" : "Thanks"})
这是.py文件中的主要内容:
if __name__ == "__main__":
print 'Start'
main()
app.run(debug=True)
print 'Done!'
但是由于某种原因,它根本无法工作..这是我得到的错误:
BadRequestKeyError: 400 Bad Request: The browser (or proxy) sent a request that this server could not understand.
KeyError:“公民”
我已经尝试过的解决方案:
答案 0 :(得分:0)
在Dash()
函数中,更改以下行
num_citizins = request.form['citizens']
到
num_citizins = request.json['citizens']
您正在发送在request.json
中接收到的JSON数据。您还需要将请求内容类型设置为application/json
,以使.json
属性起作用。
这是在jQuery中设置内容类型的方式。您只需要像这样添加contentType : 'application/json'
:
$.ajax({
data :
{
'citizens' : $("citizens").val(),
},
type : 'POST',
contentType : 'application/json',
url : '/Dash'
})