NodeJs и Ejs передают массивы на страницу
Я пытаюсь передать массив на страницу.ejs, однако, когда я пытаюсь использовать
var test ="<%= data %>";
console.log(test);
Я получаю вывод
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object
Console.log в файле nodejs работает нормально, но когда я пытаюсь запустить его на стороне клиента console.log, он портится.
1 ответ
Решение
Проблема, вероятно, с <%= data %>
, скорее, чем console.log()
, Если вы проверите результат на стороне клиента, вы, вероятно, увидите:
var test ="[object Object],[object Object],[object Object],...";
Когда вы просто печатаете Array
Достоевский .join()
элементы, вызывающие .toString()
на каждой. И:
new Object().toString() === "[object Object]"
Для вывода данных, чтобы их можно было использовать, вы можете использовать JSON.stringify()
:
var test = <%- JSON.stringify(data) %>;
Это использует преимущества синтаксиса JSON, основанного на синтаксисе JavaScript, для выводаArray
буквальный изObject
литералы:
var test = [{"prop":"value"},...];