node.js - 无法从注册表中发布
问题描述
我在 NodeJS 中实现了一个注册表单。单击提交按钮时,我无法从注册表单中获取数据。我不知道为什么会这样!请帮帮我。
user.js 存储在路由文件中。userregister.ejs 存储在视图文件中。
// users.js
var express = require('express');
var router = express.Router();
//Get Login
router.get('/login', function(req,res){
res.render('userlogin');
});
//Get Register
router.get('/register', function(req,res){
res.render('userregister',{title:'Register'});
});
//Post Register
router.post('/register', function(req,res){
var nam = req.body.name;
console.log(nam);
});
module.exports = router;
//useregister.ejs
<form method="POST" action="/register" >
<div class="form-group">
</div>
<div class="form-group">
<input type="text" name="name" placeholder="Name" required
class="form-control input-lg" />
</div>
<div class="form-group">
<input type="text" name="username" placeholder="Username"
required class="form-control input-lg" />
</div>
<div class="form-group">
<input type="text" name="email" placeholder="Email" required
class="form-control input-lg" />
</div>
<div class="form-group">
<input type="password" name="password" class="form-control input-
lg" id="password" placeholder="Password" required="" />
</div>
<div class="form-group">
<input type="password" name="password2" class="form-control input-lg" id="password2" placeholder="Confirm Password" required="" />
</div>
<div class="pwstrength_viewport_progress"></div>
<button type="submit" name="submit" class="btn btn-lg btn-primary btn-block">Sign Up</button>
<div>
<p> Have an account : <a href="/login">Login Here </a> </p>
</div>
</form>
解决方案
您快到了,但您错过了几个关键步骤:
- 在您可以使用路由器之前,您需要创建应用程序并使用路由器
- 在顶部: const app = express()
- 在底部:
- app.use('/',路由器)
- app.listen(3000, () => console.log('示例应用监听')
- 要阅读表单,您需要一个解析器
- var bodyParser = require('body-parser')
- app.use(bodyParser.json());
- var urlencodedParser = bodyParser.urlencoded({extended: false })
- 解析器是一个中间件,所以你需要将它添加到路由中
- router.post('/register', urlencodedParser , function(req,res){
- 不要忘记在console.log 之后响应浏览器,否则应用会挂起。
这是工作代码:
// users.js
var express = require('express');
var router = express.Router();
var bodyParser = require('body-parser');
const app = express();
const port = 3000;
app.use(bodyParser.json());
var urlencodedParser = bodyParser.urlencoded({ extended: false })
//Get Login
router.get('/login', function(req,res){
res.render('userlogin');
});
//Get Register
router.get('/register', function(req,res){
res.sendFile(__dirname+'/userregister.ejs');
});
//Post Register
router.post('/register', urlencodedParser, function(req,res){
var nam = req.body.name;
console.log(nam);
res.send(nam);
});
app.use('/',router)
app.listen(port, () => console.log(`Example app listening on port ${port}!`))
module.exports = router;
推荐阅读
- c - 使用 libevdev 跟踪多个着陆/上升
- forms - 如何以嵌入形式从非映射字段中检索数据
- google-cast - 如何获取在 chromecast 设备上崩溃的 Receiver 应用程序的崩溃日志?
- azure - 使用 Azure CLI 列出超过 5000 个 blob 时,如何消除 Powershell 中的错误消息?
- grails - Grails:如何向 F:Table 添加参数
- ionic3 - 我在为 ios 编译 ionic 3 应用程序时出错,无法安装“onesignal-cordova-plugin”:未定义
- php - 如何对 id 字段的单击复选框求和价格并传递给控制器并在 laravel 的文本框中查看
- javascript - 如何在视频上放置倾斜叠加
- python - Python 3.6 BaseHTTPRequestHandler 不响应请求
- jquery - Moment js开闭时间