Flask聊天机器人Ajax表单提交出现404 Not Found错误求助
解决Flask聊天机器人表单提交404错误问题
你的问题根源很明确:前端AJAX请求正在尝试向 /get 地址发送POST请求,但你的Flask后端没有配置对应的路由来处理这个请求,所以触发了404 Not Found错误。如果移除url: "/get",AJAX会默认提交到当前页面的URL,后端返回整个页面的HTML代码,导致聊天框里出现网站副本而非机器人的回复内容。
具体修复步骤:
1. 在Flask后端添加/get路由
在你的Flask应用主文件中,新增一个处理POST请求的/get路由,专门接收用户消息并返回机器人的回复:
from flask import Flask, request app = Flask(__name__) # 替换成你的语言模型生成回复的逻辑 def generate_bot_reply(user_input): return f"机器人回复:{user_input}" @app.route('/get', methods=['POST']) def chat_response(): # 获取前端发送的消息 user_msg = request.form.get('msg') if not user_msg: return "请输入消息内容", 400 # 调用模型生成回复 bot_reply = generate_bot_reply(user_msg) # 返回纯文本格式的回复(适配前端的data处理逻辑) return bot_reply if __name__ == '__main__': app.run(debug=True)
2. 确认路由配置的关键细节
- 必须指定
methods=['POST'],因为前端AJAX使用的是type: "POST"请求方式; - 用
request.form.get('msg')获取数据,要和前端AJAX中data: {msg: rawText}的键名msg完全匹配; - 返回内容保持纯文本即可,这样前端
done回调中的data直接就是机器人的回复内容。
3. 前端调试辅助(可选)
可以给AJAX请求添加失败回调,方便排查后续可能出现的问题:
$.ajax({ data: { msg: rawText }, type: "POST", url: "/get" }).done(function(data){ var botHtml = '<div class="d-flex justify-content-start my-4 chatBubble"><div class="msg_container">' + data + '<span class="msg_time">' + str_time + '</span></div></div>'; $("#chatArea").prepend($.parseHTML(botHtml)); }).fail(function(xhr, status, error) { console.log("请求失败:", status, error); console.log("后端返回内容:", xhr.responseText); });
完成以上配置后,用户提交表单时会正确请求/get路由,后端返回机器人的回复内容,聊天框就能正常显示预期的对话了。
内容的提问来源于stack exchange,提问作者james_erikson
相关产品推荐
相关产品推荐

