简体   繁体   English

ejs 网站从服务器端获取了一个变量,并且无法正常工作

[英]ejs website got a variable from server side, and not working propertly

I use Node.js, express and ejs我使用 Node.js、express 和 ejs

Client got a variable from server side客户端从服务器端获取变量

res.render('Messagess.ejs', {friendsdatas:friends, myaccount:accresult, mytoken:cookies.LoginToken})

I use this variable in html code like this.我在这样的 html 代码中使用这个变量。 This working properly.这工作正常。

<% for (var i=0; i<friendsdatas.length; i++) { %>
  <p class="name"><%= friendsdatas[i].Username %></p>
<% } %>

But inside the script section, I can't use like how I want但是在脚本部分,我不能像我想要的那样使用

for (var i = 1; i<'<%=friendsdatas.length %>'; i++) {
  console.log('<%=friendsdatas[i].id %>')
}

Here I got error Error在这里我得到错误错误

If I use the variable like this, that working properly如果我使用这样的变量,那可以正常工作

console.log('<%=friendsdatas[1].id %>')

For this case,对于这种情况,

<% for (var i=0; i<friendsdatas.length; i++) { %>
  <p class="name"><%= friendsdatas[i].Username %></p>
<% } %>

code that is inside <% %> is executed by server. <% %> 中的代码由服务器执行。 Since the control structure (for) is inside <% %>, it can run and read friendsdatas .由于控制结构 (for) 在 <% %> 内部,因此它可以运行和读取friendsdatas

However, the other case然而,另一种情况

for (var i = 1; i<'<%=friendsdatas.length %>'; i++) {
  console.log('<%=friendsdatas[i].id %>')
}

This for part is run by the client side.这部分由客户端运行。 The client side can't access friendsdata.id so it can't be run.客户端无法访问friendsdata.id ,因此无法运行。

<% for (var i = 1; i<'<%=friendsdatas.length %>'; i++) { %>
  console.log('<%=friendsdatas[i].id %>')
<% } %>

This will output i console.log statement.这将 output i console.log 语句。 Or alternatively或者,

<% 
let friendsdatasString = JSON.stringify(friendsdatas);
%>
<script>
let friendsdatas = <%- friendsdatasString %>;
for (var i = 1; i<friendsdatas.length; i++) {
  console.log(friendsdatas[i].id)
}
</script>

Pass the server side variable to client side variable and loop normally for client side.将服务器端变量传递给客户端变量并为客户端正常循环。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM