res.render不能呈现视图,返回HTML文本。

3

在 express/node 中这样调用:

jQuery.ajax({
            url : url,
            type: "GET",
            data: {names : names},
            success: function(data) {
                console.log("ajax post success");
            },
            error: function(jqXHR) {
                console.log(jqXHR.responseText + ' :: ' + jqXHR.statusText);
            }
        });

在 Express 的 router.js 文件中:
app.get('/metrics/:title/:node/:metric', function(req,res) {
    console.log("received request " );
console.log(req.query.names);
    res.render('nltuning', {
        locals: {
            tdata : req.params.title,
            gdata : req.params.node,
            mdata : req.params.metric,
            ndata : req.query.names
        }
    } );
});

所有控制台消息都已正确打印,ajax成功已打印。ajax显示响应中的html文本。
但视图未呈现。对于POST和GET也是如此 - 原因何在?
如果我在浏览器窗口中键入相同的URL,视图将被呈现。非常感谢您的指点。

我看到这一行缺失了:success: function(data) { console.log("ajax post success"); jQuery('body').html(data); }, - user1447121
1个回答

3

如果你想在Ajax调用后显示新内容,那么难道不应该有任何代码告诉脚本这样做吗? 例如:

success: function(data){
        $('someElement').html(data);
    }

是的,我在发布后才意识到这一点。但我有一个后续问题。如何在新标签页中显示新视图?以下代码似乎不起作用:jQuery('body').target = '_blank'; - user1447121
我以前没有处理过那个问题,但也许这可以帮助:window.open('要打开的网址','窗口名称','属性1,属性2')。打开一个新标签并将“名称”放入属性中,这不会是真正的ajax,但至少它应该能够工作。 - Developicus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接