您现在的位置是:首页 >学无止境 >【Python】flask框架 响应前端ajax请求网站首页学无止境
【Python】flask框架 响应前端ajax请求
简介【Python】flask框架 响应前端ajax请求
【Python】flask框架 响应前端ajax请求
前端JavaScript代码
// 处理用户输入
chatBtn.click(function () {
var message = chatInput.val();
if (message.toString().replaceAll(" ", "").trim() == "") {
common_ops.alert("请输入内容!")
} else {
addUserMessage(message);
chatBtn.attr('disabled', true) // 消息发送后让提交按钮不可点击
// 发送信息到后台
$.ajax({
url: '{{url_for("KGQA_answer")}}',
method: 'GET',
data: {
"prompt": JSON.stringify(message)
},
success: function (res) {
res = JSON.parse(res);
// alert(res.content);
addBotMessage(res.content);
chatBtn.attr('disabled', false) // 成功接受消息后让提交按钮再次可以点击
},
error: function (jqXHR, textStatus, errorThrown) {
addBotMessage('<span style="color:red;">' + '出错啦!请稍后再试!' + '</span>');
chatBtn.attr('disabled', false)
}
});
}
});
后端Python代码
flask接收前端请求并返回JSON串
@app.route('/KGQA_answer', methods=['GET', 'POST'])
def KGQA_answer():
question = request.args.get('prompt') # 获取参数
print(question)
json_data = {"content": "好的!"}
return json.dumps(json_data)
dict = AssignIntension(question)
classification = getClass(dict)
if (classification == 'entity'):
entityName = getEntityName(question)
json_data = query(str(entityName))
else:
print("未知问题")
return jsonify(json_data)
处理ajax的Post请求
var id = obj.parentNode.parentNode.id;
$.post("/delitem/"+id, {}, function(data){
showData(data);
},"json");
@app.route('/delitem/<id>', methods=['POST'])
def delitem(id):
db.delItem(id) #业务代码
#db.data是python列表对象(元素是字典),返回到浏览器后就是js数组(元素是Josn对象
return jsonify({"result":db.data})
注意,处理函数可以return
两种格式的数据。一是合法的json格式的字符串。
举例2:
var id = $("#recordid").val();
var name = $("#recordname").val();
var msg = $("#recordinfo").val();
$.post("/additem", {"id":id,"name":name,"msg":msg}, function(data){
showData(data);
},"json");
对应的flask代码如下:
@app.route('/additem', methods=['POST'])
def additem():
db.addItem(request.form.get('id'),request.form.get('name'),request.form.get('msg'))
return jsonify({"result":db.data})
注意,@app.route
方法中需要指定methods
参数为POST
可以看出,在flask中,通过request.form.get
来获取ajax发出post
的请求。 get方法还可以带第2个参数缺省值,如果指定的参数名不存在,有缺省值的则返回缺省值,没有的话返回None。注意,如果浏览器不是通过ajax发来的post请求,而是通过form提交的,则用request.form[表单元素名]
来获取表单元素中的值。
Reference
https://www.bbsmax.com/A/gVdnvoY1dW/
加油!
感谢!
努力!
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。