Node.js 在EJS中循环使用JSON

Node.js 在EJS中循环使用JSON,node.js,ejs,Node.js,Ejs,我在下面的EJS中有代码 <script> var row =<%-JSON.stringify(data)%> console.log(row); </script> <% for(var i=0; i<JSON.stringify(data).length; i++) {%> <tr> <td> <%= JSON.stringify(data)[i].id%>

我在下面的EJS中有代码

<script>
    var row =<%-JSON.stringify(data)%>
    console.log(row);
</script>
<% for(var i=0; i<JSON.stringify(data).length; i++) {%>
   <tr>
     <td>
       <%= JSON.stringify(data)[i].id%>
     </td>
   </tr>
<% } %>

var行=
控制台日志(行);

JSON.stringify
返回一个
字符串。例如:

var data = [
    { id: 1, name: "bob" },
    { id: 2, name: "john" },
    { id: 3, name: "jake" },
];

JSON.stringify(data)
将返回相当于:

"[{\"id\":1,\"name\":\"bob\"},{\"id\":2,\"name\":\"john\"},{\"id\":3,\"name\":\"jake\"}]"
作为
字符串

所以当你有

<% for(var i=0; i<JSON.stringify(data).length; i++) {%>
stringify(data).length返回字符串长度而不是对象长度,可以使用Object.keys

<% for(var i=0; i < Object.keys(data).length ; i++) {%>


在我的例子中,
数据
是数组的对象,有关详细信息,请


索引:
数据:

我在select上创建动态选项的方法是:

<optgroup label="Select Table">
    <% for(var i=0; i<doctors.length; i++) {%>
        <% fullname = doctors[i].surname + doctors[i].name %>
        <option name="doctor" value=" <%= fullname%> "><%= fullname%></option>
    <% } %>
</optgroup>


我已经从响应中发送了数据,我只是使用for循环对其进行迭代。

在for循环中,您可以引用
数据,因为它在服务器上被操作(即,您希望将其作为真实对象而不是字符串进行操作)。关于第二个问题,
alert
window
是特定于浏览器的,不是n节点。谢谢Barry。在EJS中是否可能,我在中定义了一个函数或变量,并在中引用了它?您好!这是正确的。但是如何处理html呈现页面而不是ejs???@SPnL,这是不可能的。使用EJS,您可以在渲染之前使用JS代码。请在您的答案中添加一些解释,以便其他人可以从中学习。谢谢您的评论。我已经编辑了代码,请检查一下。
<table>
  <tr>
    <td>1</td>
    <td>bob</td>
  </tr>
  <tr>
    <td>2</td>
    <td>john</td>
  </tr>
  <tr>
    <td>3</td>
    <td>jake</td>
  </tr>
</table>
<% for(var i=0; i < Object.keys(data).length ; i++) {%>
<% for(let [index,data] of datas.entries() || []){  %>
 Index : <%=index%>
 Data : <%=data%>
<%} %>
<optgroup label="Select Table">
    <% for(var i=0; i<doctors.length; i++) {%>
        <% fullname = doctors[i].surname + doctors[i].name %>
        <option name="doctor" value=" <%= fullname%> "><%= fullname%></option>
    <% } %>
</optgroup>