我开始学习nodejs,并在他们的文档中安装了express。现在,在这个过程中,我想要创建一个登录表单,在单击登录时,我希望它传递给、check 路由来检查凭据。
我不会在这里贴出完整的代码。只是其中的一部分。
var routes = require('./routes/index'); //default with express
var users = require('./routes/users'); //default with express
var login = require('./routes/login'); //created by me
var check = require('./routes/check'); //created by me.更新2
app.use('/', routes);
app.use('/users', users);
app.use('/login', login);
app.use('/check', check);登录路径运行良好,我得到了输出。当我单击登录时,它进入路由。
http://localhost:3000/check扔404找不到。
然而,如果我直接在浏览器中输入url,我将在浏览器中获得输出。
check.js
router.get('/', function(req, res, next) {
res.send('respond with a resource');
});更新check.js
var express = require('express');
var router = express.Router();
/* GET users listing. */
router.post('/check', function(req, res, next) {
res.send('respond with a resource');
});
module.exports = router;login.jade
extends layout
block content
div(class="col-md-4 col-lg-4 col-md-offset-4 col-lg-offset-4")
h1 User Login
form(name="login", action="/check", method="post")
div(class="form-group")
input(type="text", name="user" class="form-control")
div(class="form-group")
input(type="password", name="pass" class="form-control")
div(class="form-group")
input(type="submit", value="login" class="btn btn-warning form-control")我还在寻找创建node.js应用程序的基本文档,这也不复杂,对于菜鸟来说也很容易理解。
更新1:单击登录按钮时出错
Error: Not Found
at app.use.res.render.message (/home/alaksandar/Desktop/Untitled Folder/myapp/app.js:38:13)
at Layer.handle [as handle_request] (/home/alaksandar/Desktop/Untitled Folder/myapp/node_modules/express/lib/router/layer.js:82:5)
at trim_prefix (/home/alaksandar/Desktop/Untitled Folder/myapp/node_modules/express/lib/router/index.js:302:13)
at /home/alaksandar/Desktop/Untitled Folder/myapp/node_modules/express/lib/router/index.js:270:7
at Function.proto.process_params (/home/alaksandar/Desktop/Untitled Folder/myapp/node_modules/express/lib/router/index.js:321:12)
at next (/home/alaksandar/Desktop/Untitled Folder/myapp/node_modules/express/lib/router/index.js:261:10)
at /home/alaksandar/Desktop/Untitled Folder/myapp/node_modules/express/lib/router/index.js:603:15
at next (/home/alaksandar/Desktop/Untitled Folder/myapp/node_modules/express/lib/router/index.js:246:14)
at Function.proto.handle (/home/alaksandar/Desktop/Untitled Folder/myapp/node_modules/express/lib/router/index.js:166:3)
at router (/home/alaksandar/Desktop/Untitled Folder/myapp/node_modules/express/lib/router/index.js:35:12)发布于 2015-04-23 14:13:13
编辑2
路由器必须通过app.use()作为中间件应用:
router.post('/', function(req, res, next) {
res.send('respond with a resource');
});
app.use('/check', router);
then a POST Request on Path "/check" would be handeled by your router.如果没有这样做,则直接通过app.post()提供如下路由
app.post('/check', function(req, res, next) {
res.send('respond with a resource');
});编辑:
action="/check“就足够了;)
但是,您仍然忽略了这样一个事实,即表单向路由"/check“发送了一个帖子,而您的快速路由器正在处理路由上的GET请求"/”
原始
我认为您错误地使用了form标记的action属性:它应该是
action="http://www.yourDomain.com/check"也许我错了
action="/check"就够了,
但是,您也在收听GET请求,并且表单在提交时发送了一个帖子。
router.get('/', function(req, res, next) {
res.send('respond with a resource');
});另外,您所关注的路径是"/“,而/check应该是"/check”--我的方法是:
check.js
router.post('/check', function(req, res, next) {
res.send('respond with a resource');
});login.jade
extends layout
block content
div(class="col-md-4 col-lg-4 col-md-offset-4 col-lg-offset-4")
h1 User Login
form(name="login", action="http://www.yourDomain.com/check", method="post")
div(class="form-group")
input(type="text", name="user" class="form-control")
div(class="form-group")
input(type="password", name="pass" class="form-control")
div(class="form-group")
input(type="submit", value="login" class="btn btn-warning form-control")希望这能有所帮助
发布于 2015-04-23 16:01:20
更新
在app.js中使用
app.use('/check',check)
在check.js中使用
router.post('/', function(req, res, next) {
res.send('respond with a resource');
});并确保正在使用module.exports导出此函数。
老
在您的check.js文件中,需要使用
router.post('/check', function(req, res, next) {
res.send('respond with a resource');
});而不是
router.get('/', function(req, res, next) {
res.send('respond with a resource');
});https://stackoverflow.com/questions/29825612
复制相似问题