【问题标题】:Post JSON data to render page将 JSON 数据发布到渲染页面
【发布时间】:2013-10-16 19:06:35
【问题描述】:

我从 URL:“/accounts/:id/users”获取 JSON 格式的搜索结果,我需要检索该 JSON 数据以呈现“/contacts/find”。 (后一页显示搜索结果。)

这是我的应用路由器。有了这个,我可以在 /contacts/find 中看到 JSON 格式的搜索结果:

app.post('/contacts/find', function(req, res) {
  var searchStr = req.param('searchStr', null);
  if ( null == searchStr ) {
    res.send(400);
    return;
  }

  models.Account.findByString(searchStr, function onSearchDone(err,accounts) {
    if (err || accounts.length == 0) {
      res.send(404);
    } else {
      res.send(accounts);
    }
  });
});

如何使用“帐户”(JSON 格式)并使用帐户信息重新呈现页面?我正在尝试使用下面的代码 sn-p,但它不起作用。

app.get('/contacts/find', function(req, res) {
 res.render('searchResult.ejs', {
  accounts: req.accounts,
  email: req.accounts.email
 })
}

app.get 方法不起作用。该 URL 仅显示 JSON 数据。

【问题讨论】:

    标签: javascript node.js post express get


    【解决方案1】:

    所以accounts 是一个 JSON 字符串?在这种情况下,您可以解析它(将其转换回对象)并将结果传递给您的模板:

    var accounts = JSON.parse(req.accounts);
    res.render('searchResult.ejs', {
      accounts : accounts,
      email    : accounts.email
     })
    

    【讨论】:

    • 如果我在“app.post”方法中渲染页面而不使用“app.get”方法可以吗?
    • @eknbrk 当然,我不明白为什么不这样做。只需将 POST 路由中的 res.send 替换为 res.render
    • 再次感谢@robertklep .. 它有效,但是页面将​​ 呈现为“未定义”.. 你有什么想法吗?
    • @eknbrk 听起来accounts.email 可能是未定义的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    相关资源
    最近更新 更多