【问题标题】:Node/Express Form handling [duplicate]节点/快速表单处理 [重复]
【发布时间】:2016-08-13 07:05:15
【问题描述】:

我正在按照教程使用玉模板引擎构建节点/快速应用程序,当我尝试提交表单时出现 404 错误。对于我的路由,我有 app.post('/sign_up', sign_up); 行,这给了我一个错误。 sign_upvariable 在上面使用这一行 var sign_up = require('./routes/sign_up'); 声明。

奇怪的是,如果我在 sign_up 变量的位置注册一个回调函数,那么我可以很好地检索数据,我使用这段代码做到了 app.post('/sign_up', function(req, res){ console.log(req.body); });.

在我的路由文件夹中,我得到了 sign_up.js 文件,它输出了一个相当简单的文本行。我试过改功能

var express = require('express');
var router = express.Router();

/* GET users listing. */
router.get('/', function(req, res, next) {
  res.send('You signed up');
});
module.exports = router;

以下是我的 form.jade 文件的内容

    extends layout
    block content
    h1= title
    form(name="sign-up", action="/sign_up", method="post")
        div
            label Username: 
            input(type="text", name="username")
        div
            label Password: 
            input(type="password", name="password")
        div
            input(type="submit", value="Sign Up")

【问题讨论】:

  • 看看我认为这是重复的问题。您对在外部文件中声明路由的方式感到困惑。
  • 感谢您的意见。就像我说的那样,我正在学习教程,这就是教程中的内容。不过,感谢您指出正确的方向。

标签: javascript node.js express pug


【解决方案1】:

如果您使用 sign_up.js 来处理路由,那么您应该在那里定义 post 函数。尝试在 sign_up.js 中添加这个

/* POST*/
router.post('/sign_up', function(req, res, next) {
  res.send('You signed up');
});

【讨论】:

  • 这解决了我的问题。非常感谢。这很奇怪,因为其他路径都使用了“/”并且它们运行良好,所以在 users.js 文件中“/users”路径被定义为router.get('/', function(req, res, next) { res.send('respond with a resource'); });你能解释为什么它有效而另一个无效吗?
  • 其他使用router.get,post方式需要使用router.post。如果您需要 Put,将来您还需要使用 router.put。如果您需要为所有 http 方法设置全局处理程序,您也可以使用 router.all。
  • 我要问的是为什么您可以导航到 localhost:3000/users,即使该路径的路径是 router.get('/', function(req, res, next) { res.send('respond with a resource'); });,它位于 users.js 文件中?当我将 router.get('/users', function(req, res, next) { res.send('respond with a resource'); }); 放入 users.js 文件时,我收到 404 错误。
  • app.js 中有app.use('/users', users); 吗?
  • 是的,我也有app.post('/sign_up', sign_up);。是语法不起作用吗?这似乎是一个非常糟糕的教程,我想我会继续看看我现在能学到什么。您对我可以使用的更好的教程有什么建议吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-21
  • 1970-01-01
  • 2011-02-15
  • 2012-02-25
  • 2017-10-21
  • 2023-03-03
  • 2013-05-05
相关资源
最近更新 更多