【问题标题】:Routing Express and outputting to template路由 Express 并输出到模板
【发布时间】:2016-04-15 05:47:55
【问题描述】:

假设我有

router.get('/read', function(request, response) {
   res.send({"result": "Success sent from routes/index.js."});
});

如何输出带有数据的模板。如果我使用 res.send() 我不能使用 res.render() 对吗?

如果我的用户在 /read 并单击按钮以使用 ajax 发送一些数据,我想在 /read 上的另一个模板中显示该数据

编辑:解决此问题的一种方法是在您返回数据(或可能不返回)时创建一个字符串

        success : function(data){
            $(".fillIn").html("<p style = 'color:green;'>" + data + "</p>")
        }

我不想要字符串。

图片显示在一个页面上“/”有 2 个按钮,通过单击每个按钮,您可以发送数据,并且数据可以显示在右侧,具体取决于单击的按钮,填写了一些数据的表单或用一些数据填充的表格。我使用ajax在点击时发送数据..会有不同样式的不同表单。这就是我想添加模板的原因。我认为我可以使用 HTML 使用 .load() 来做到这一点,但我不知道如何处理该玉石。

这是我的另一个Question

【问题讨论】:

    标签: javascript ajax node.js express


    【解决方案1】:

    在您的 index.js 文件中,使用以下内容捕获 GET 和 POST 请求并呈现不同的响应:

    app.get('/read', function(req, res, next){
        res.render('emptyFormTemplate');
    });
    
    app.post('/read', function(req, res, next){
        res.render('dataTableTemplate', {
            name: req.body.name,
            email: req.body.email
        });
    });
    

    在客户端,您可以使用类似的方式将数据 POST 到 /read。在上面的示例中,您可以将此脚本包含在 emptyFormTemplate 中。

    $('#myForm').submit(function(event){
        var formData = {
            'name'              : $('input[name=name]').val(),
            'email'             : $('input[name=email]').val()
        };
        $.ajax({
            type: 'POST',
            url: '/read',
            data: formData,
            dataType: 'json'
        });
     });
    

    【讨论】:

    • 感谢您的帮助。我不知道我可以在 POST 处理程序中使用 res.render() 。我越来越近了,但截至目前,我遇到了一个问题。当我单击按钮时,我看到`POST localhost:3000/read 200 OK 60ms`,在控制台的响应中我看到响应中的值但页面没有改变。(“/read”)它与@保持相同987654325@我想
    • 没有看到你的代码,解决问题有点困难——你能创建一个 Jsfiddle 或 Plunker 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-27
    • 2014-11-25
    • 2020-11-30
    相关资源
    最近更新 更多