Express JS对表单提交停留在页面上



我知道这可能是一个简单的问题,有一个教程的地方,但我似乎找不到它。我使用express-generator生成了一个应用程序,并在路由

中添加了一个简单的表单。

视图/form.ejs

<div>
<h1>This is <%= name %></h1>
<form action="/form" method="POST">
    <input type="text" name="question" placeholder="question"><br>
    <input type="text" name="answer" placeholder="answer"><br>
    <input type="submit">
</form>

我要做的是在表单提交后处理请求,而不对页面做任何事情。基本上我想让它保持不变,所以我尝试了下面的

路线/index.js

var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});
router.get('/form', function (req, res) {
    res.render('form', {name: "My Name"});
});
router.post('/form', function (req, res) {
    console.log(req.body);
});
module.exports = router;

浏览器一直在等待服务器的响应。我试着添加next(),但它给出了一个错误,我也试着从函数返回没有使用。那么,我如何在不响应客户端的情况下发出post请求或处理任何路由呢?

我想这里的问题是"你为什么想要?";通过允许不响应客户端的post请求,您想要实现什么?

你最好的选择,我认为,将做res.json(successOrFailureMessage),这样你的客户端应用程序被告知发生了什么,可以做一些事情(或实际上什么都不做)从那里。否则,它将挂起等待响应。

post代码更新为:

router.post('/form', function (req, res) {
    console.log(req.body);
    res.render('form', {req: req.body});
});

根据评论更新了答案

将参数传递给ejs:

app.get('/form', function(req, res) {
res.render('form.ejs', {
    question: req.body.question,
    answer: req.body.answer
});

最新更新