将数组从 EJS 传递到 Javascript

Posted

技术标签:

【中文标题】将数组从 EJS 传递到 Javascript【英文标题】:passing an array from EJS to Javascript 【发布时间】:2016-11-05 21:18:35 【问题描述】:

我正在尝试将数组从 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>

【问题讨论】:

【参考方案1】:

你必须对数组进行字符串化

var test = <%- JSON.stringify(level_tab) %>;

我不熟悉 EJS,但一般来说,即使 EJS 中的语法略有不同,也应该适用相同的原则。

【讨论】:

@amine_detter 我编辑了帖子 - 你试过删除引号吗? 现在很好用,但是编辑器(webstorm)表示存在错误,这就是我使用单引号的原因。无论如何谢谢。【参考方案2】:

我这样处理将数组从 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>
<%  %>

【讨论】:

不是我想要的,问题是将此数组“arr”传递给javascript中的数组【参考方案3】:

我找到了一个可行的解决方案,但我不知道是否有其他方法可以做到这一点。 我改变了

var test = '<%- level_tab %>';

通过这个循环,

<% for(var j=0; j<level_tab.length; j++)  %>
            level_tab.push('<%- level_tab[j]%>');
<%%>

【讨论】:

【参考方案4】:

参考JSON from EJS to JSON object in JS

去掉单引号:

var test = ;

【讨论】:

它有效,但编辑器(webstorm)表示存在错误,这就是我使用单引号的原因。谢谢【参考方案5】:

使用这个就可以了。(不要使用单引号)

        var test = <%-JSON.stringify(level_tab) %>; 
        console.log("test :"+test);

【讨论】:

以上是关于将数组从 EJS 传递到 Javascript的主要内容,如果未能解决你的问题,请参考以下文章

在作为 EJS 模板传递以查看的字符串化 JSON 中转义单引号

如何使用 EJS 模板引擎将变量传递给内联 javascript?

如何将数组从 js 打印到 ejs 模板?

为啥我不能像传递其他变量一样将函数从 Express.js 传递给 EJS?

将 html 标签作为 ejs 变量的值传递

如何将日期格式从对象的猫鼬数组更改为 ejs 视图上的字符串?