当前位置: 首页 > 面试题库 >

无法发布表单node.js-Express

司徒鸿文
2023-03-14
问题内容

使用express 3.1.0,我有一个非常简单的形式:

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

并在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'));
});

尝试发布此表单时,我得到:

Cannot POST /signup

并在控制台中:

"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()代码中。



 类似资料:
  • 问题内容: 我似乎无法恢复发送到我的Node.js服务器的发布请求的表单数据。我在服务器代码和发布请求(在chrome中使用postman发送)的下方放置了: 发布请求 NodeJS服务器代码 登录方法尝试获取,但是始终为空。我在SO上看到过其他描述这种行为的案例,但是没有相关的答案在这里适用。 感谢您的帮助。 问题答案: 通常,快速应用程序需要指定适当的主体解析器中间件才能包含主体。 [编辑]

  • 问题内容: 好,这就是我得到的,基本上是单击一个按钮并执行以下代码: 除了传递给Monsterequest.php以外,其他所有东西似乎都按预期工作,该帖子没有传递到其自身上,并且页面在传递给主要父对象时基本上重新加载了它的自我…(我不确定是否是,但是monsterrequest.php本身似乎可以很好地工作,但是在加载时它根本无法按预期工作,我完全感到困惑。我基本上想发布数据而无需重新加载页面。

  • 我正在测试邮递员上的优步API,我能够成功地发送一个与表单数据的请求。当我试图使用Node.js和axios库翻译这个请求时,我得到了一个错误。 以下是我的邮递员请求: 我得到的响应是: 我希望得到与Postman相同的响应,Node.js脚本中的配置变量有问题吗? 任何帮助都将不胜感激!

  • 问题内容: 我必须承认我有点困惑…我以前从未做过,而且我显然缺少一些东西 当我通过http.post将数据传递到我的php文件时,我似乎无法收集数据… 有人可以告诉我为什么这行不通吗? FormData会显示在控制台日志中,并且可以确定正在写入文件。但是,看起来好像没有数据传递。 这是在我的php文件中。试图将提交表单中的数据写入文件中(只是测试)。 问题答案: 经过大量研究后,我发现这有点像ph

  • 问题内容: 我正在使用express,无法从bodyParser获取表单数据。无论我做什么,它总是会变成一个空对象。这是我明确生成的app.js代码(我唯一添加的是底部的app.post路由): 这是我的HTML表单: 当我提交表单时,req.body是一个空对象{} 值得注意的是,即使我从表单标签中删除了enctype属性,也会发生这种情况 …我有什么地方想念/做错了吗? 我正在使用节点v0.4

  • 问题内容: 当前设置 我有这样的HTML表单。 我可能在页面上有很多这些表格。 我的问题 如何异步提交此表单,而不进行重定向或刷新页面?我知道怎么用。我遇到的问题是从javascript中的HTML检索数据,然后将其放入发布请求字符串中。这是我当前用于zXMLHttpRequest的方法。 例如,假设单击了表单的“提交”按钮时调用了javascript方法,那么如何从该方法访问表单的值并将其添加到