【问题标题】:How to pass data from express.js to a Javascript code related to a html page如何将数据从 express.js 传递到与 html 页面相关的 Javascript 代码
【发布时间】:2014-08-01 08:48:42
【问题描述】:

我对 express.js 和一般编程非常陌生。我正在尝试学习如何从数据库(Mongodb)中检索数据并将其发送到 html 文件或 javascript。我设法检索数据并 console.log 它。我有这段代码,它从数据库中获取名为“数据”的数组并控制台记录它。我想将位置数组的数据传递给我的 html 文件,以提醒该位置。我想我可以简单地将数据作为节点模块放在一个 javascript 文件中,然后在另一个 javascript 文件中调用该变量。现在我知道如果是翡翠,我可以很容易地在 res.render 之后添加变量。如果我使用 html 并且有一个单独的 javascript 文件,它将如何工作?

这是我的 app.js 代码:

var placeFinder = require ("./public/assets/js/data.js");
app.get('/test', function(req, res){

  placeFinder(function(err, data){
    if(err){
      return res.send(500);
    }    
    res.locals.place = data;
    console.log(data);
    res.render('test', {data: data});
  });
});

这是我的 data.js 代码:

var mongoose = require ('mongoose');  
function getPlaces(callback){
  var data = new Array();
  mongoose.model('stories').find({},function(err, companies) {
    if(err){
      return callback(err, data);
    }
    for (var i = 0; i < companies.length; i++) {
      data[i] = JSON.stringify(companies[i].place);
    }
    return callback(null, data);
 });
}
module.exports = getPlaces;

这是我的带有js代码的html:

<html>
<head>
  <title>test</title>
  <script> 
   $('button.showlocation').click( function(){
    var new = {{data}};
    document.write(new);
  }
  </script>
</head>
<body>
<button class="showlocation btn btn-info">Click Here!</button>

</body>
</html>

非常感谢

【问题讨论】:

    标签: javascript html node.js express


    【解决方案1】:

    用途:

    res.render('ViewMode', {data: data});
    

    在您的 ViewMode 模板中有一个 var this.data 或只是数据。在您的脚本中,假设您的分隔输出的标签是 {{}}(如把手:

    <script> var places = {{data}}</script>
    

    【讨论】:

    • 那么我可以简单地在我的 ViewMode.html 中的 js 脚本的任何部分调用变量数据?
    • 对不起,如果我问这个,它可能很简单,但我想在 javascript 部分使用它,并且 data 是一个数组,所以如果我只放 var places = data 然后休息吗?
    • 您好,我再次编辑了问题,实际上我将 html 文件更改为更简单的东西,但仍然无法正常工作。即使在这个简单的代码中,它也无法读取数据。我在这里做错了什么?
    • 是html app.set('view engine', 'html');
    • 你需要使用真正的模板引擎如doT、ectjs、dustjs、hamljs、handlebar、jade...
    【解决方案2】:

    也许快速而肮脏的答案是: - 在包含您的 JS 文件之前,在包含您的 google maps JS 的 HTML 文件中,在名为 places 的全局变量中呈现数据。

    另一种方法是从您的 NodeJS 服务器上的客户端 javascript 和端点调用,它只返回您在“位置”中拥有的数据。

    【讨论】:

    • 您好,请您解释一下第二个选项。这和渲染参数不一样吗?
    • 在服务器端而不是用渲染
    • 在服务器端而不是用 res.render('test', {data: data});您可以使用 res.send(200, {data: data}) 在 HTTP 上仅返回 JSON 格式的数据(在另一个函数中呈现模板);在客户端,您可以在需要该数据时进行 Ajax 调用 (stackoverflow.com/questions/8567114/…)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-10
    相关资源
    最近更新 更多