node.js - 发现模板引擎 (ejs) 问题
问题描述
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>
当我在节点中编码时。我制作了一个 ejs 模板,在其中制作了一个表单。表单正在使用 POST 方法。当我使用 POST 方法对其进行路由时,它不会呈现页面并且它说 CANNOT GET。
另一方面,当我将它与 GET 请求一起使用时,它绝对可以正常工作,这意味着它正在向我呈现我制作的 ejs 页面。
我无法理解为什么我的 ejs 使用 GET 请求而不是 POST 请求向我呈现页面。
解决方案
在您的seller.post
方法中,您调用了res.render
2 次。这将不起作用,因为res.render
将 HTTP 响应发送回客户端,并且您不能对一个请求发送 2 个响应。
虽然res.render
不需要是您方法中的最后一条语句,但它后面不能跟随另一段生成响应的代码,因为已经发送了响应。
您应该删除res.render
方法中的第一个。
推荐阅读
- nginx - 在 go web 应用程序之前,NginX 不会提供静态文件 index.html
- python - 带词汇的 Python 词袋编码
- ruby-on-rails - 在rails中制作上传视频按钮但仍然不运行
- django - Django navigator.sendbeacon csrf 保护
- android - 在虚拟设备上安装 PhoneGap Developer App
- javascript - java.lang.String 类型的值无法转换为 JSONObject - React Native?
- c# - 使用所有存储的值创建一个实例的克隆
- ios - 如何让 Xcode 读取 UITextFields
- ios - 如何为 tableview 部分提供一个带有可选案例的枚举
- python - Python:如何将列表写入csv,每行有N个项目