Estoy generando dinámicamente datos json como se muestra a continuación
<script> $(document).ready(function() { len = "<%- gsdata.length %>" for ( i = 0; i < len; i++) { //window.alert(len); var data = { "Results": [{ "SCRIP": gsdata[i].SCRIP, "LTP": gsdata[i].LTP, "ALERT": gsdata[i].CAMARILLA, "TRIGERP": gsdata[i].ALERT, "BOOKAT": gsdata[i].BOOKAT, "PROFIT": gsdata[i].PROFIT, }] } } $('#scrip-data').DataTable({ data: data.Results, columns: [ {data: "SCRIP"}, {data: "LTP"}, {data: "ALERT"}, {data: "TRIGERP"}, {data: "BOOKAT"}, {data: "PROFIT"}, ], }); } ); </script> Esta es una plantilla ejs y el bucle está dentro de las etiquetas <script> . No puedo obtener el valor de i en "SCRIP": "<%- gsdata[i].XXX %>". with "SCRIP": "<%- gsdata[1].SCRIP %>" Puedo obtener los valores.
Cualquier ayuda aquí por favor
Supongo (no sé ejs), pero creo que debe indicar que el ciclo for es parte de la plantilla, y no parte de la etiqueta de script "salida":
<script> $(document).ready(function() { len = "<%- gsdata.length %>" //window.alert(len); var data = { "Results": [ <%- for (var i = 0; i < gsdata.length; i++) { %> { "SCRIP": "<%- gsdata[i].SCRIP %>", "LTP": "<%- gsdata[i].LTP %>", "ALERT": "<%- gsdata[i].CAMARILLA %>", "TRIGERP": "<%- gsdata[i].ALERT %>", "BOOKAT": "<%- gsdata[i].BOOKAT %>", "PROFIT": "<%- gsdata[i].PROFIT %>", }, <%- } %> ] } </script>Actualizado a lo que creo que el cartel está buscando ... aunque adivinando.
No necesita usar la sintaxis EJS dentro de JavaScript.
Y no debe llamar a JSON.stringify() para obtener la longitud de la matriz. Eso devuelve la longitud de la matriz serializada.
$(document).ready(function() { var len = gsdata.length; for (var i = 0; i < len; i++) { //window.alert(len); var data = { "Results": [{ "SCRIP": gsdata[i].SCRIP, "LTP": gsdata[i].LTP, "ALERT": gsdata[i].CAMARILLA, "TRIGERP": gsdata[i].ALERT, "BOOKAT": gsdata[i].BOOKAT, "PROFIT": gsdata[i].PROFIT, }] } }