无法 POST 表单 node.js - express [英] Cannot POST form node.js - express
本文介绍了无法 POST 表单 node.js - express的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
使用 express 3.1.0 我有一个超级简单的表单:
<div><label>密码:</label><input type="password" name="password"/>
<div><input type="submit" value="Sign Up"/></div></表单>
在 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('视图引擎', '玉');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('开发', function(){app.use(express.errorHandler());});app.get('/', routes.index);app.get('/form', function(req, res) {fs.readFile('./form.html', function(error, content) {如果(错误){res.writeHead(500);重发();}别的 {res.writeHead(200, { 'Content-Type': 'text/html' });res.end(content, 'utf-8');}});});app.post('/signup', function(req, res) {var 用户名 = req.body.username;var 密码 = req.body.password;User.addUser(用户名,密码,功能(错误,用户){如果(错误)抛出错误;res.redirect('/form');});});app.get('/users', user.list);http.createServer(app).listen(app.get('port'), function(){console.log("Express 服务器监听端口" + app.get('port'));});
当我尝试发布此表单时:
无法发布/注册
并在控制台中:
"NetworkError: 404 Not Found - http://localhost:3000/signup"
我在这里遗漏了什么?
解决方案
你的例子对我有用.我删除了对用户、用户和路由的引用,以便我可以运行它并在控制台中正确接收和显示 HTTP POST.
app.post('/signup', function(req, res) {var 用户名 = req.body.username;var 密码 = req.body.password;console.log("收到帖子:%s %s", 用户名, 密码);});
我怀疑错误出在您的 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屋!
查看全文