快递JS表格提交留在页面上

时间:2016-09-04 10:07:58

标签: javascript node.js forms express

我知道这可能是一个简单的问题,并且有一个教程,但我似乎无法找到它。 我使用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()但是它出错了,我也尝试从函数返回而没有用。 那么如何在不响应客户的情况下发布帖子请求或处理任何路线?

3 个答案:

答案 0 :(得分:1)

我想这里的问题是&#34;你为什么要这样做?&#34 ;;您希望通过允许不响应客户端的帖子请求来实现什么目标?

我认为,最好的办法是做res.json(successOrFailureMessage),以便客户端应用程序被告知发生了什么,并且可以从那里做某事(或者什么也不做)。否则它会在等待响应时挂起。

答案 1 :(得分:1)

将您的post代码更新为:

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

答案 2 :(得分:0)

根据评论

更新了答案

将参数传递给ejs:

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