Как я могу передать массив в шаблон ejs в express?

#javascript #node.js #express #ejs

#javascript #node.js #экспресс #ejs

Вопрос:

Я пытаюсь передать массив, содержащий объекты, в представления ejs в express, но это не работает.

На сервере,

 var roominfo = function(roomname){
this.roomname=roomname;
};

room_info_array= new Array(1);
room_info_array[0]=new roominfo("room");

app.get("/", function(req, res){
res.render('login',{room_info:room_info_array});
});
  

В клиенте,

 <script type="text/javascript">
var data = <%= JSON.stringify(room_info) %>
</script>
  

это показывает ошибку «Uncaught SyntaxError: неожиданный токен amp; «.

 var data = [{amp;quot;roomnameamp;quot;:amp;quot;roomamp;quot;}]"
  

Я попробовал это

 <script type="text/javascript">
var data = <% JSON.stringify(room_info) %>
</script>
  

Однако это показывает, что данные не определены.

Как я должен правильно передать массив в ejs?

Ответ №1:

В EJS echoing что-то делается с

 <%= %>
  

или

 <%- %>
  

В последнем примере вы ничего не повторяете, поэтому в data ничего не передается, и это не определено.

В первом примере вы также экранируете отображаемое содержимое, поэтому попробуйте использовать echoing строку без экранирования, поскольку это приведет к удалению объектов.

 var data = <%- JSON.stringify(room_info) %>