【问题标题】:Render data sent to Express post router渲染数据发送到 Express post 路由器
【发布时间】:2017-01-20 12:32:20
【问题描述】:

我从 Express 开始,我有一个问题;我有设置和一切,我做了一些简单的事情,但我知道我想与 API 交互,做我想做的事情,我需要从 input 字段中获取我想要的数据。我想用发送的数据刷新主 (/) 页面。就像客户端的 ajax 请求一样。我不知道如何将发送到 post 路由器的数据发送到 get 路由器,而不必转到另一个链接(即 localhost:3000/link),我想留在完成请求的同一页面中.我在模板中使用 pug (jade)

快递:

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

/* GET home page. */
router.get('/', (req, res, next) => {
    res.render('index');
});

/* POST HANDLER */
router.post('/link', function(req, res, next) {
    console.log(req.body);
});

module.exports = router;

jQuery:

$('#shortLink').on('click', () => {
    $.ajax({
        type: 'POST',
        url: '/link',
        data: $('linkInput').val()
    });
});

所以,要清楚。用户在输入字段上放一些东西;将该数据发送到 post 路由器,我希望将发送到 post 路由器的信息发送到 get 路由器,而不必离开完成请求的页面。如果我没有很好地解释自己,请告诉我。

【问题讨论】:

    标签: javascript jquery node.js express


    【解决方案1】:

    假设您已设置 body parser 并了解模板的工作原理。

    在这里,您想要以某种方式将数据保存在服务器上的某个位置。现在在一个非常简单的情况下,您可以将其保存到变量中:

    var data = null;
    router.get('/', (req, res, next) => {
        res.render('index', { data: null });
    });
    
    router.post('/link', function(req, res, next) {
        data = req.body
        res.send('');
    });
    

    然后在你的模板中你可以做p= data。

    现在在你post 到/link 之后,下次刷新/ 将显示数据。

    不过,在大多数 Web 应用程序中,人们会将这些内容保存到数据库中。这是an example for MongoDB将数据保存到特定文档:

    router.get('/', (req, res, next) => {
        collection.findOne({ id: 'specificDoc'}, function (err, result) {
            if (err) {
                next(err);
                return;
            }
            res.render('index', { data: result.data });
        });
    });
    
    router.post('/link', function(req, res, next) {
        collection.update({ id: 'specificDoc', { data: req.data }, { upsert: true }, function (err, result) {
            if (err) {
                next(err);
                return;
            }
            res.send('');
        });
    });
    

    您可能还开始使用会话并根据用户使用 cookie 或其他方法保存数据。 Here's a toturial 在 express 中使用会话。

    【讨论】:

    • 嘿,它起作用了,但我使用了重定向而不是 res.send。感谢您的输入,是的,我会查看该教程,
    猜你喜欢
    • 2015-09-22
    • 1970-01-01
    • 2019-04-25
    • 2019-09-06
    • 1970-01-01
    • 2016-08-08
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    相关资源
    最近更新 更多