You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js Express项目中第二个POST接口无响应的解决方法

修复第二个POST请求无响应的问题

你的代码里有几个关键问题导致老师登录的POST接口无响应,以下是具体修改方案:

1. 修正数据库查询表错误

老师登录接口的SQL查询错误指向了students表,应该改为查询teachers表:

// 原错误代码
connection.query("SELECT * FROM students WHERE user_id = ? AND password = ?", [username1, password1], function(error, results, fields) {
// 修改后
connection.query("SELECT * FROM teachers WHERE user_id = ? AND password = ?", [username1, password1], function(error, results, fields) {

2. 补充数据库查询错误处理

两个登录接口都没有处理数据库查询失败的情况,一旦SQL执行出错,请求会因未返回响应而挂起。必须添加错误捕获逻辑:

// 学生登录接口修改后
app.post("/student", encoder, function(req, res) {
    var username = req.body.username;
    var password = req.body.password;
    connection.query("SELECT * FROM students WHERE user_id = ? AND password = ?", [username, password], function(error, results, fields) {
        // 新增错误处理
        if (error) {
            console.error("数据库查询出错:", error);
            return res.status(500).send("服务器内部错误");
        }
        if (results.length > 0) {
            res.redirect("/welcomestudent");
        } else {
            res.redirect("/");
        }
    });
});

// 老师登录接口修改后
app.post("/teacher", encoder, function(req, res) {
    var username1 = req.body.username1;
    var password1 = req.body.password1;
    connection.query("SELECT * FROM teachers WHERE user_id = ? AND password = ?", [username1, password1], function(error, results, fields) {
        // 新增错误处理
        if (error) {
            console.error("数据库查询出错:", error);
            return res.status(500).send("服务器内部错误");
        }
        if (results.length > 0) {
            res.redirect("/welcometeacher");
        } else {
            res.redirect("/");
        }
    });
});

3. 验证前端表单字段名一致性

检查login_page.html中老师登录表单的输入框name属性是否为username1和password1。如果表单实际使用的是username和password,则后端需要修改变量名对应:

// 如果老师表单字段是username和password,修改为:
var username = req.body.username;
var password = req.body.password;

建议统一前后端字段名,避免不必要的混淆。

4. 优化中间件注册(可选)

当前你在每个POST接口单独传入encoder中间件,可以改为全局注册,简化代码:

// 删除原有的const encoder = ...,替换为全局注册
app.use(bodyParser.urlencoded({extended: true}));

// 之后的POST接口无需再传encoder参数
app.post("/student", function(req, res) { ... });
app.post("/teacher", function(req, res) { ... });

内容的提问来源于stack exchange,提问作者sonu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 02:24:59