将数组从 EJS 传递到 Javascript
passing an array from EJS to Javascript
我正在尝试将数组从 ejs 传递到 JavaScript。我可以获取 ejs 中的值,但不能来自 JavaScript。我一直都是未定义的,因为变量的内容 "test" 是一个字符串而不是数组。
<script>
var test = '<%- level_tab %>';
alert(test);
function level(s1,s2){
var s1 = document.getElementById(s1);
var s2 = document.getElementById(s2);
s2.innerHTML = "";
if(s1.value == "level_0"){
var optionArray = test;
}
else if(s1.value == "level_1"){
var optionArray = ["test|test01", "test0|test02"];
}
for(var option in optionArray){
var pair = optionArray[option].split("|");
var newOption = document.createElement("option");
newOption.value = pair[0];
newOption.innerHTML = pair[1];
s2.options.add(newOption);
}
}
</script>
你必须对数组进行字符串化
var test = <%- JSON.stringify(level_tab) %>;
我不熟悉 EJS,但总的来说应该适用相同的原则,即使 EJS 中的语法略有不同。
我这样处理以将数组从 express 传递到 EJS 页面:
在 node.js 代码中:
.post('/action', function(req, res) {
var arr = ["premier", "second", "troisième", "quatrieme", "cinquieme"];
res.render('page.ejs', {arr: arr});
});
并且在 page.ejs 中:
<% for(var i = 0 ; i < arr.length ; i++) { %>
<tr>
<td><%= arr[i] %></td>
</tr>
<% } %>
我找到了一个有效的解决方案,但我不知道是否有其他方法可以做到这一点。
我改变
var test = '<%- level_tab %>';
通过这个循环,
<% for(var j=0; j<level_tab.length; j++) { %>
level_tab.push('<%- level_tab[j]%>');
<%}%>
参考JSON from EJS to JSON object in JS
删除单引号:
var 测试 = <%- JSON.stringify(level_tab) %>;
使用它会很好。(不要使用单引号)
var test = <%-JSON.stringify(level_tab) %>;
console.log("test :"+test);
我正在尝试将数组从 ejs 传递到 JavaScript。我可以获取 ejs 中的值,但不能来自 JavaScript。我一直都是未定义的,因为变量的内容 "test" 是一个字符串而不是数组。
<script>
var test = '<%- level_tab %>';
alert(test);
function level(s1,s2){
var s1 = document.getElementById(s1);
var s2 = document.getElementById(s2);
s2.innerHTML = "";
if(s1.value == "level_0"){
var optionArray = test;
}
else if(s1.value == "level_1"){
var optionArray = ["test|test01", "test0|test02"];
}
for(var option in optionArray){
var pair = optionArray[option].split("|");
var newOption = document.createElement("option");
newOption.value = pair[0];
newOption.innerHTML = pair[1];
s2.options.add(newOption);
}
}
</script>
你必须对数组进行字符串化
var test = <%- JSON.stringify(level_tab) %>;
我不熟悉 EJS,但总的来说应该适用相同的原则,即使 EJS 中的语法略有不同。
我这样处理以将数组从 express 传递到 EJS 页面: 在 node.js 代码中:
.post('/action', function(req, res) {
var arr = ["premier", "second", "troisième", "quatrieme", "cinquieme"];
res.render('page.ejs', {arr: arr});
});
并且在 page.ejs 中:
<% for(var i = 0 ; i < arr.length ; i++) { %>
<tr>
<td><%= arr[i] %></td>
</tr>
<% } %>
我找到了一个有效的解决方案,但我不知道是否有其他方法可以做到这一点。 我改变
var test = '<%- level_tab %>';
通过这个循环,
<% for(var j=0; j<level_tab.length; j++) { %>
level_tab.push('<%- level_tab[j]%>');
<%}%>
参考JSON from EJS to JSON object in JS
删除单引号:
var 测试 = <%- JSON.stringify(level_tab) %>;
使用它会很好。(不要使用单引号)
var test = <%-JSON.stringify(level_tab) %>;
console.log("test :"+test);