node.js - Boucle via JSON dans EJS



(2)

J'ai des codes dans EJS ci-dessous,

<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>
<% } %>

la sortie de la ligne est correcte, un tableau de 3 objets, chacun avec les propriétés id, name etc .. Je peux manipuler la ligne pour peupler la table dans JS. Cependant, je me demande s’il existe un moyen de permettre que cela se fasse de la manière indiquée ci-dessus.

Lorsque j'exécute le code ci-dessus, JSON.stringify (data) .length n'est pas 3, mais plutôt la longueur de la chaîne entière.

Une autre question est quand j'essaie d'ajouter

<% alert ('t'); %> ou <% window.alert ('t'); %>, cela me donne une erreur 'non définie' ...

Des aides appréciées.

Cordialement Marteau

https://ffff65535.com


JSON.stringify (data) .length renvoie la longueur de la chaîne et non la longueur de l'objet. Vous pouvez utiliser Object.keys.

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

https://.com/a/14379528/3224296


JSON.stringify renvoie une String . Donc, par exemple:

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

JSON.stringify(data)

retournera l'équivalent de:

"[{\"id\":1,\"name\":\"bob\"},{\"id\":2,\"name\":\"john\"},{\"id\":3,\"name\":\"jake\"}]"

en tant que valeur de String .

Alors quand tu as

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

ce à quoi cela ressemble est:

<% for(var i=0; i<"[{\"id\":1,\"name\":\"bob\"},{\"id\":2,\"name\":\"john\"},{\"id\":3,\"name\":\"jake\"}]".length; i++) {%>

ce qui n'est probablement pas ce que vous voulez. Ce que vous voulez probablement , c'est quelque chose comme ça:

<table>
<% for(var i=0; i < data.length; i++) { %>
   <tr>
     <td><%= data[i].id %></td>
     <td><%= data[i].name %></td>
   </tr>
<% } %>
</table>

Ceci affichera le tableau suivant (en utilisant les exemples de data ci-dessus):

<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>




ejs