我是nodejs的新手。我试图使用ejs引擎创建登录表单。我想要的只是使用发布请求在欢迎屏幕上打印用户名和密码。问题是,如果我使用POST操作,它将打印我的数据但不显示欢迎屏幕布局,如果我使用GET操作,那么它将显示屏幕布局但没有数据。我已经在app.js文件中编写了代码。这是对的吗??我在下面提到了我的app.js代码以供参考。提前谢谢。
代码: -
app.post('/welcome', function(req, res) {
res.send('Username is '+req.body.unm+'<br>Password is '+req.body.pwd);
});
答案 0 :(得分:0)
你面临什么问题?返回字符串是否显示值?
使用模板引擎时,您应该使用render
代替res.send
来发送视图。
检查ejs主页中给出的样本。
答案 1 :(得分:0)
在ejs npm页面上有一些非常有用的信息:https://www.npmjs.com/package/ejs
我建议您查看express
包,它允许您提供页面,因此您可以从这样的内容开始:
app.get('/', function(req, res){
return res.sendFile(__dirname + '/index.html');
});
这是一个有用的答案,可以帮助你:how to implement login auth in node.js
答案 2 :(得分:0)
如果您使用Express与ejs,您需要定义包含您的视图的文件夹(.ejs文件),如下所示:
var express = require('express')
app.use(express.static(__dirname + '/views')); // set the static files location for the static html
而不是res.send,请回答:
app.post('/welcome', function(req, res) {
res.render('welcome', {username: req.body.unm, password: req.body.pwd});
});
在welcome.ejs中构建您的html并为<%= username %>
和<%= password %>
项目库中views目录中的示例welcome.ejs
文件:
<div class="container">
<p>Welcome<b><%= username %></b></p>
<p>Your password is <%= password %> </p>
</div>
答案 3 :(得分:0)
试试这个..
这是您的index.html文件,您可以在其中填写用户名和密码。我正在调用显示帖子操作以在提交时显示您的用户名和密码。
<强> home.html的强>
<form action="/display" method="POST">
<input type="text" placeholder="name" name="name">
<input type="text" placeholder="password" name="pwd">
<button type="submit">Submit</button>
</form>
这是您的nodejs代码,它使用post请求显示用户名和密码。快递将通过获取请求为您的html页面提供服务,并且在提交数据时将触发发布请求。
const express = require('express')
const bodyParser = require('body-parser')
const app = express()
app.use(bodyParser.urlencoded({
extended: true
}))
app.get('/', (req, res) => {
res.sendFile(__dirname + '/home.html')
});
app.post('/display', (req, res) => {
res.send('Username is ' + req.body.name + '<br>Password is ' + req.body.pwd);
console.log(req.body)
});
app.listen(3000, () => {
console.log('listening on 3000')
})