簡體   English   中英

ejs 網站從服務器端獲取了一個變量,並且無法正常工作

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

我使用 Node.js、express 和 ejs

客戶端從服務器端獲取變量

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

我在這樣的 html 代碼中使用這個變量。 這工作正常。

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

但是在腳本部分,我不能像我想要的那樣使用

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

在這里我得到錯誤錯誤

如果我使用這樣的變量,那可以正常工作

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

對於這種情況,

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

<% %> 中的代碼由服務器執行。 由於控制結構 (for) 在 <% %> 內部,因此它可以運行和讀取friendsdatas

然而,另一種情況

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

這部分由客戶端運行。 客戶端無法訪問friendsdata.id ,因此無法運行。

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

這將 output i console.log 語句。 或者,

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

將服務器端變量傳遞給客戶端變量並為客戶端正常循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM