【问题标题】:Template Engine (ejs) issues found发现模板引擎 (ejs) 问题
【发布时间】:2019-03-17 07:16:41
【问题描述】:

                            SUBMIT EJS FILE
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <h2> Your password has been changed click here for <a href="user">login</a></h2>
</body>
</html>

我的密码类

类密码{

constructor(newPass,confirmPass) {

    this.newPass=newPass;
    this.confirmPass=confirmPass;    
}

} module.exports=密码;

我的路由文件

seller.post('/change',(req,res)=>{

    console.log('kkkkkkkkkkkkkk');
    res.render('change');
    var newPass=req.body.newPass;
    console.log("New Password:::",newPass);
    var confirmPass=req.body.confirmPass;
    console.log('Confirm Password:::',confirmPass);   
    var passPanel=new password(newPass,confirmPass);
    var pr=operations.findOneAndUpdate(passPanel);

    pr.then(data=>{
        console.log(data);
        res.render('change',{newPass:data.newPass, confirmPass:data.confirmPass});

    })
})


             seller.post('/submit',(req,res)=>{
            res.render('submit');
           });
      module.exports=seller;

我的服务器配置

app.use(bodyParser.urlencoded({extended:false}));
app.use(bodyParser.json());
app.set("view engine","ejs");
app.use('/', require('./Routes/sellerRoutes'));
app.listen(process.env.PORT||1234, (err)=>{

    if(err) {
        console.log('An Error has occured', err);
        logger.error('Server Not Start ',err);
    }

    else {

        console.log("Server Started");
        logger.debug('Server Started');
    }
})

我的 EJS 文件代码

<body class="section">
    <h1><center>Password Change</center></h1>
    <form method="POST" action="submit">
        <% var newPass;%> <% var confirmPass; %>
        <label for="">New Password:</label>
        <input type="password" id="newPass" name="newPass" value="<%=newPass%>">

    <div class="cnfrm">
        <label for="">Confirm Password:</label>
        <input type="password" id="confirmPass" name="confirmPass" value="<%=confirmPass%>">
    </div>
        <button id="chngepswd" class="btn btn-success">OK</button></a>
    </form>
    <br>
</body>

当我在 node.js 中编码时。我制作了一个 ejs 模板,在其中制作了一个表单。表单正在使用 POST 方法。当我使用 POST 方法对其进行路由时,它不会呈现页面并且它说 CANNOT GET。

另一方面,当我将它与 GET 请求一起使用时,它绝对可以正常工作,这意味着它正在向我呈现我制作的 ejs 页面。

我无法理解为什么我的 ejs 使用 GET 请求而不是 POST 请求向我呈现页面。

【问题讨论】:

  • 你能分享一些代码吗?您的表单操作可能是错误的,但没有代码只是很多猜测
  • @RaduDiță 你能给我你的电子邮件吗?我正在尝试发布问题,但由于格式问题,堆栈溢出不允许我这样做。
  • Stack Overflow 只是告诉您不要发布代码的“屏幕截图”。不要截图,而是复制代码的“文本”并将其粘贴到问题中。
  • @NeilLunn 我没有发布任何屏幕截图我正在复制代码,但它说我要添加一些 cmets,当我添加 cmets 时它仍然显示添加 cmets 错误。
  • @NeilLunn 我已经发布了我的代码。

标签: node.js express


【解决方案1】:

您在表单上的action提交

&lt;form method="POST" action="submit"&gt;

这意味着浏览器将尝试访问 /submit,但您似乎没有相应的路径。

您可能需要将操作更改为 /change

【讨论】:

  • 我创建了一个页面,我希望用户设置新密码并确认密码,当它按下确定按钮时,它有十个路由直接提交页面。让我更新我的代码
【解决方案2】:

在您的seller.post 方法中,您调用了res.render 2 次。这将不起作用,因为res.render 将 HTTP 响应发送回客户端,而您无法对一个请求发送 2 个响应。

虽然res.render 不需要是您方法中的最后一条语句,但它不能跟随另一段生成响应的代码,因为已经发送了。

您应该删除方法中的第一个 res.render

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-17
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    • 2015-12-16
    • 2018-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多