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

NodeJS登录表单提交按钮无响应,请求排查问题原因

登录按钮无响应问题排查与修复

问题描述

这是一个基于Node.js的测试登录界面,代码用于实现登录功能,但点击提交按钮无任何反应,无法跳转到已创建的dashboard页面。以下是对代码问题的分析及修复方案:


代码问题分析与修复

1. HTML页面(嵌套表单导致提交失效)

原HTML中存在嵌套<form>标签的问题:外层有一个无属性的空表单,内层才是真正的登录表单。HTML规范不允许表单嵌套,浏览器会忽略内层表单的提交配置,直接导致点击提交按钮无反应。

原问题代码片段:

<body><h1> LMS</h1>
    <form> <!-- 多余的外层空表单 -->
        <div class="text-center center-div "id="login">
            <div class="container w-25 py-5">
                <!-- 内层登录表单 -->
                <form action="/route/login" method="post" class="pt-3">
                    <!-- 表单内容 -->
                </form>
            </div>          
        </div>
    </form> <!-- 对应外层表单的闭合标签 -->
</body>

修复方案:

删除外层的空<form>标签,只保留内层的登录表单:

<body><h1> LMS</h1>
    <div class="text-center center-div "id="login">
        <div class="container w-25 py-5">
            <div class="title pb-5">
                <h2 class="font-weight-bold">Login System</h2>
                <span> Login for the existing user</span>
            </div>
            <form action="/route/login" method="post" class="pt-3">
                <div class="form-group">
                    <input type="email" class="form-control" id="exampleInputEmail1" name="email" placeholder="email">
                    <small class="form-text text-muted text-left">We'll never share your email with anyone else.</small>
                </div>
                <div class="form-group">
                    <input type="password" class="form-control" id="exampleInputPassword1" name="password" placeholder="password">
                </div>
            
                <button type="submit" class="btn btn-success rounded-pill">Submit</button>
            </form>
        </div>          
    </div>
</body>

2. Router.js(Dashboard渲染路径错误)

原代码中dashboard路由的res.render使用了带斜杠的路径/dashboard,而EJS视图文件默认存放在项目根目录的views文件夹下,渲染时不需要开头的斜杠,错误路径会导致登录成功后无法正确渲染页面。

原问题代码片段:

//dashboard
router.get('/dashboard',(req,res)=>{
    if(req.session.user){
        res.render('/dashboard',{user:req.session.user}) // 错误路径
    }else{
        res.send('Unauthorised user')
    }
})

修复方案:

去掉路径开头的斜杠:

//dashboard
router.get('/dashboard',(req,res)=>{
    if(req.session.user){
        res.render('dashboard',{user:req.session.user}) // 正确路径
    }else{
        res.send('Unauthorised user')
    }
})

3. App.js(服务启动日志错误)

原代码中app.listen的回调函数未正确输出日志,且端口描述与实际配置不符,虽不直接导致按钮失效,但会影响调试时的信息判断:

原问题代码片段:

app.listen(port,()=>{'Listening on port 3000'});

修复方案:

改为正确的日志输出,匹配配置的端口:

app.listen(port,()=>{
    console.log(`Listening on port ${port}`);
});

额外注意事项

  • 确保项目根目录下存在views文件夹,且dashboard.ejs文件已正确放置在该目录中。
  • 确认body-parser、express-session、ejs等依赖已正确安装(可通过npm install检查)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:40:32