【问题标题】:res.render not rendering view, returns html textres.render 不渲染视图,返回 html 文本
【发布时间】:2013-03-04 18:15:44
【问题描述】:

因此调用 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,视图就会被渲染。任何指针表示赞赏。

【问题讨论】:

  • 我看到这条线不见了:成功:函数(数据){console.log(“ajax发布成功”); jQuery('body').html(数据); },

标签: node.js jquery express


【解决方案1】:

如果你想在 ajax 调用之后显示新内容,不应该有任何代码说明脚本这样做吗? 例如:

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

【讨论】:

  • 是的,发帖后才发现。但我有一个后续问题。如何在新选项卡中显示新视图?这似乎不起作用:jQuery('body').target = '_blank';
  • 我以前没有处理过这个问题,但也许这有帮助:window.open('url to open','window name','attribute1,attribute2') 打开一个新标签并把将“名称”添加到属性中,这不是真正的 ajax,但至少我会说它会起作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-30
  • 2018-06-23
  • 1970-01-01
  • 1970-01-01
  • 2015-06-26
相关资源
最近更新 更多