【问题标题】:print variable returned by server in node.jsnode.js 中服务器返回的打印变量
【发布时间】:2016-12-23 02:30:34
【问题描述】:

我正在创建一个 node.js 应用程序。

我有一个包含 4 种电影类型的列表(见下文)。

当我单击其中一种类型时,我会调用服务器,然后服务器会从数据库中检索该类型的电影并将结果发回给我。 在我的客户端,我可以正确地看到服务器发送给我的结果,但是我无法循环遍历结果以便将所有电影打印到屏幕上。

<ul>
  <li id="Animation">Animation</li>
  <li id="Action">Action</li>
  <li id="Comedy">Comedy</li>
  <li id="Drama">Drama</li>
</ul>
<ul>
<% movies.forEach(function(movie){ %>  // doesnt work 
    <li><%= movie.id %> - <%= movie.title %></li>
<% }) %>
</ul>

<script>
$( document ).ready(function() {
  $('li').click(function(){
    var movieType = $(this).attr('id');
    $.post('findMovies', { type: movieType}, function(data){
        console.log(data);  // I see the array correctly in browser's console
        var movies = data;
      });
  });
});
</script>

【问题讨论】:

  • 不确定您要寻求什么帮助:如果 data 是一个数组,您可以使用:data.forEach(function(movie) { console.log(movie)})
  • @jfriend00 看起来像是“在服务器上发生了什么/在客户端发生了什么”混淆的情况
  • 可以显示console.log(data)的结果吗?

标签: javascript node.js ejs


【解决方案1】:

在你的 post 回调函数中循环:

...
$.post('findMovies', { type: movieType}, function(data){
    data.forEach(function(movie){
        var li = $('<li/>')
            .text(movie.id + ' - ' + movie.title)
            .appendTo(ulRef);//assuming ulRef is a reference to the ul element above
    });
});
...

您的代码不起作用,因为

<% movies.forEach(function(movie){ %>  
    <li><%= movie.id %> - <%= movie.title %></li>
<% }) %>

“发布”完成后不会重新处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-04
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多