将 ejs 表单数据发布到控制器的问题
Issues in posting ejs form data to controller
i have gone through "http://tanmaysarkar.com/html-form-with-ejs-template-in-nodejs/" this post but i have written my logic in controller
i am using mean stack with ejs template engine , i want to post ejs form data to ctroller which is under controller folder i dont how to post it to controller please help the following is ejs template, login.ejs is under views folder
<%- include('partials/header') %>
<div class="form-container">
<h2>Login</h2>
<% if(locals.error) { %>
<div class="alert alert-danger"><%= error %></div>
<% } %>
<% if(locals.success) { %>
<div class="alert alert-success"><%= success %></div>
<% } %>
<form method="post" action="">
<div class="form-group">
<label for="username">Username</label>
<input type="text" name="username" id="username" value="<%= locals.username || '' %>" class="form-control" />
</div>
<div class="form-group">
<label for="password">Password</label>
<input type="password" name="password" id="password" class="form-control" />
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary">Login</button>
<a href="/register" class="btn btn-link">Register</a>
</div>
</form>
</div>
<%- include('partials/footer') %>
on post of this following controller should get called
In controllers/login.controller.js i have written following post req
router.post('/', function (req, res) {
// authenticate using api to maintain clean separation between layers
request.post({
url: config.apiUrl + '/users/authenticate',
form: req.body,
json: true
}, function (error, response, body) {
if (error) {
return res.render('login', { error: 'An error occurred' });
}
if (!body.token) {
//console.log("inside if loop " + body.token + "::" + req.body.username + "::" + body)
return res.render('login', { error: body, username: req.body.username });
}
// save JWT token in the session to make it available to the angular app
req.session.token = body.token;
// redirect to returnUrl
var returnUrl = req.query.returnUrl && decodeURIComponent(req.query.returnUrl) || '/';
console.log("return url" + returnUrl);
res.redirect(returnUrl);
//res.render('register')
});
});
我只需要添加
var ejs = require('ejs');
var login = require(__dirname + '/views/login.ejs');//for ejs
var logincontroller = require(__dirname + '/controllers/login.controller.js');//for ejs
"server.js" 中的以上三行是我的应用程序的入口点,当我实际发布时需要数据映射,例如
app.use('/controllers/login.controller.js', logincontroller);//for ejs
在我的 ejs 文件中
<form method="post" action="/controllers/login.controller.js">
需要
i have gone through "http://tanmaysarkar.com/html-form-with-ejs-template-in-nodejs/" this post but i have written my logic in controller
i am using mean stack with ejs template engine , i want to post ejs form data to ctroller which is under controller folder i dont how to post it to controller please help the following is ejs template, login.ejs is under views folder
<%- include('partials/header') %>
<div class="form-container">
<h2>Login</h2>
<% if(locals.error) { %>
<div class="alert alert-danger"><%= error %></div>
<% } %>
<% if(locals.success) { %>
<div class="alert alert-success"><%= success %></div>
<% } %>
<form method="post" action="">
<div class="form-group">
<label for="username">Username</label>
<input type="text" name="username" id="username" value="<%= locals.username || '' %>" class="form-control" />
</div>
<div class="form-group">
<label for="password">Password</label>
<input type="password" name="password" id="password" class="form-control" />
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary">Login</button>
<a href="/register" class="btn btn-link">Register</a>
</div>
</form>
</div>
<%- include('partials/footer') %>
on post of this following controller should get called
In controllers/login.controller.js i have written following post req
router.post('/', function (req, res) {
// authenticate using api to maintain clean separation between layers
request.post({
url: config.apiUrl + '/users/authenticate',
form: req.body,
json: true
}, function (error, response, body) {
if (error) {
return res.render('login', { error: 'An error occurred' });
}
if (!body.token) {
//console.log("inside if loop " + body.token + "::" + req.body.username + "::" + body)
return res.render('login', { error: body, username: req.body.username });
}
// save JWT token in the session to make it available to the angular app
req.session.token = body.token;
// redirect to returnUrl
var returnUrl = req.query.returnUrl && decodeURIComponent(req.query.returnUrl) || '/';
console.log("return url" + returnUrl);
res.redirect(returnUrl);
//res.render('register')
});
});
我只需要添加
var ejs = require('ejs');
var login = require(__dirname + '/views/login.ejs');//for ejs
var logincontroller = require(__dirname + '/controllers/login.controller.js');//for ejs
"server.js" 中的以上三行是我的应用程序的入口点,当我实际发布时需要数据映射,例如
app.use('/controllers/login.controller.js', logincontroller);//for ejs
在我的 ejs 文件中
<form method="post" action="/controllers/login.controller.js">
需要