我正在使用兩個獨立表單操作的網頁上有兩個單獨的表單。我可以得到一份表格,但我無法同時工作。如果我改變了其中一個路由器('/ other-user',...)router.post('/ direct-user',...)和post path router.post('/ other-user',...)只是router.post('/',...),那麼它工作得很好。Node.js/Express - 路由多個表單發佈
我懷疑我的app.js路由聲明有問題,但我無法弄清楚。
任何指導將超級棒。
我的應用程序的結構是這樣的:
/project
/routes
index.js
requser.js
/views
error.hbs
index.hbs
layout.hbs
requser.hbs
app.js
package.json
下面是其中有我的模塊導入,路線的地點和錯誤處理我的主要的應用程序文件。 app.js
// Module imports //
var express = require('express');
var bodyParser = require('body-parser');
var cookieParser = require('cookie-parser');
var morgan = require('morgan');
var path = require('path');
var app = express();
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'hbs');
app.use(morgan('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(validator());
app.use(express.static(path.join(__dirname, 'public')));
// Routes and views //
app.use('/', require('./routes/index'));
app.use('/user/:id', require('./routes/user'));
app.use('/user-update', require('./routes/user'));
app.use('/requser', require('./routes/requser'));
app.use('/direct-user', require('./routes/requser'));
app.use('/other-user', require('./routes/requser'));
// Catch 404 and forward to error handler //
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
// Development error handler; will print stacktrace //
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: err
});
});
}
// Production error handler; no stacktraces leaked to user //
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});
module.exports = app;
這是我requser文件,其中包括一個獲得途徑來加載空的形式,和兩個郵路從兩種形式的一個處理輸入。 requser.js
// Module imports //
var express = require('express');
var router = express.Router();
// GET request user form //
router.get('/', function(req, res, next) {
res.render('requser', {
title: 'User Request'
});
});
// POST /direct-user //
router.post('/direct-user', function(req, res) {
// Validate form contents
// ...
// Assuming all is well
console.log('Direct user requested');
res.send('cool');
});
// POST other-user //
router.post('/other-user', function(req, res) {
// Validate form contents
// ...
// Assuming all is well
console.log('Other user requested');
res.send('cool');
});
module.exports = router;
最後,我的表單視圖/模板。 requser.hbs
<div class="container">
<h1>User Request</h1>
<!-- Start of direct user creation form //////////////////////////////// -->
<form method="post" action="/direct-user">
<!-- First name, last name -->
<!-- ... -->
<!-- Submit button -->
<div class="row">
<div class="col-md-11">
<div class="form-group">
<button type="submit" class="btn btn-custom">Submit</button>
</div>
</div>
</div> <!-- End row -->
</form> <!-- End form -->
<!-- Start of other user creation form //////////////////////////////// -->
<form method="post" action="/other-user">
<!-- First name, last name -->
<!-- ... -->
<!-- Submit button -->
<div class="row">
<div class="col-md-11">
<div class="form-group">
<button type="submit" class="btn btn-custom">Submit</button>
</div>
</div>
</div>
</div> <!-- End container -->
這一工程!我只是在表單中忽略了/ requser /部分動作。謝謝! – knoll