【问题标题】:passing an array from EJS to Javascript将数组从 EJS 传递到 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>

【问题讨论】:

    标签: javascript arrays node.js express ejs


    【解决方案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);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-10-28
        • 2014-03-18
        • 2020-05-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多