HTML表单未调用Post方法

时间:2019-01-26 16:26:17

标签: javascript html node.js routes

我正在创建一个简单的登录页面,已经使用nodeJS和html表单创建了登录路径,但是每当我单击HTML表单上的Submit时,都会给我一个404 not found错误,尽管使用邮递员时,帖子请求正常运行,我称请求错了吗?

这是我在user.js中的路线

router.post("/login", (req, res, next) => {
  User.find({ email: req.body.email })
    .exec()
    .then(user => {
      if (user.length < 1) {
        return res.status(401).json({
          message: "Auth failed"
        });
      }
      bcrypt.compare(req.body.password, user[0].password, (err, result) => {
        if (err) {
          return res.status(401).json({
            message: "Auth failed"
          });
        }
        if (result) {
          const token = jwt.sign(
            {
              email: user[0].email,
              userId: user[0]._id
            },
            process.env.JWT_KEY,
            {
                expiresIn: "1h"
            }
          );
          return res.status(200).json({
            message: "Auth successful",
            token: token
          });
        }
        res.status(401).json({
          message: "Auth failed"
        });
      });
    })
    .catch(err => {
      console.log(err);
      res.status(500).json({
        error: err
      });
    });
});

这是我的html表单:

<div class="panel-heading">
    <form action="/user/login" method="post">
        Email : <input type="text" name="email"><br>
        Password : <input type="password" name="password"><br>
        <input type="submit"><br>
        <a href="register.html">Not a user?</a>
    </form>
</div>

它们都位于同一个应用程序目录中

这是在我的app.js文件中:

// Routes which should handle requests
app.use("/products", productRoutes);
app.use("/orders", orderRoutes);
app.use("/user", userRoutes);

1 个答案:

答案 0 :(得分:0)

您必须从其他服务器加载HTML文件。如果您需要执行XHR请求,或者需要执行代理,或者需要直接使用网址。

在您的用例中,使用此方法:

  

“ localhost:3000 /用户/登录”

应该采取行动。