无法 POST 表单 node.js - express [英] Cannot POST form node.js - express

查看:49
本文介绍了无法 POST 表单 node.js - express的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用 express 3.1.0 我有一个超级简单的表单:

<div><label>用户名:</label><input type="text" name="username"/><br/>

<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屋!

查看全文
相关文章
其他开发最新文章
热门教程
热门工具
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆