不能POST表单node.js - express [英] Cannot POST form node.js - express
本文介绍了不能POST表单node.js - express的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
< form action =/ signupmethod = 后 >
< div>
< label>用户名:< / label>
< input type =textname =username/>< br />
< / div>
< div>
< label>密码:< / label>
< input type =passwordname =password/>
< / div>
< div>< input type =submitvalue =注册/>< / div>
< / form>
和app.js:
/ **
*模块依赖关系。
* /
var express = require('express')
,routes = require('./ routes')
,fs = require('fs' )
,User = require('./ models / User.js')
,user = require('./ routes / user')
,http = require('http')
,path = require('path');
var app = express();
app.configure(function(){
app.set('port',process.env.PORT || 3000);
app.set('views' __dirname +'/ views');
app.set('view engine','jade');
app.use(express.favicon());
app.use(express .logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router );
app.use(express.static(path.join(__ dirname,'public')));
});
app.configure('development',function(){
app.use(express.errorHandler());
});
app.get('/',routes.index);
app.get('/ form',function(req,res){
fs.readFile('./ form.html',function(error,content){
if(error ){
res.writeHead(500);
res.end();
}
else {
res.writeHead(200,{'Content-Type' :'text / html'});
res.end(content,'utf-8');
}
});
});
app.post('/ signup',function(req,res){
var username = req.body.username;
var password = req。 body.password;
User.addUser(username,password,function(err,user){
if(err)throw err;
res.redirect('/ form');
});
});
app.get('/ users',user.list);
http.createServer(app).listen(app.get('port'),function(){
console.log(Express server listening on port+ app.get('port'));
});
当尝试发布此表单时,我得到:
无法POST /注册
控制台:
NetworkError:404 Not Found - http:// localhost:3000 / signup
$ 解决方案你的例子适合我。我删除了对用户,用户和路由的引用,以便我可以运行它,并在控制台中正确接收并显示HTTP POST。
app.post('/ signup',function(req,res){
var username = req.body .username;
var password = req.body.password;
console.log(post received:%s%s,username,password);
});
我怀疑您的User.addUser()代码中出现错误。
Using express 3.1.0 I have a super simple form:
<form action="/signup" method="post">
<div>
<label>Username:</label>
<input type="text" name="username"/><br/>
</div>
<div>
<label>Password:</label>
<input type="password" name="password"/>
</div>
<div><input type="submit" value="Sign Up"/></div>
</form>
and in the app.js:
/**
* Module dependencies.
*/
var express = require('express')
, routes = require('./routes')
, fs = require('fs')
, User = require('./models/User.js')
, user = require('./routes/user')
, http = require('http')
, path = require('path');
var app = express();
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
});
app.configure('development', function(){
app.use(express.errorHandler());
});
app.get('/', routes.index);
app.get('/form', function(req, res) {
fs.readFile('./form.html', function(error, content) {
if (error) {
res.writeHead(500);
res.end();
}
else {
res.writeHead(200, { 'Content-Type': 'text/html' });
res.end(content, 'utf-8');
}
});
});
app.post('/signup', function(req, res) {
var username = req.body.username;
var password = req.body.password;
User.addUser(username, password, function(err, user) {
if (err) throw err;
res.redirect('/form');
});
});
app.get('/users', user.list);
http.createServer(app).listen(app.get('port'), function(){
console.log("Express server listening on port " + app.get('port'));
});
when trying to post this form i'm getting:
Cannot POST /signup
and in the console:
"NetworkError: 404 Not Found - http://localhost:3000/signup"
what am i missing here?
解决方案 Your example works for me. I removed the references to User, user, and routes so that I can run it and the HTTP POST is received and displayed correctly in the console.
app.post('/signup', function(req, res) {
var username = req.body.username;
var password = req.body.password;
console.log("post received: %s %s", username, password);
});
I suspect the error is in your User.addUser() code.
这篇关于不能POST表单node.js - express的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文