访问EJS文件脚本标记中的Json数组

时间:2018-02-03 12:55:46

标签: node.js express ejs

我想访问EJS文件的脚本标记内的JSON数组。 我在渲染时将JSON数组从我的index.js文件传递给EJS文件。代码是:

sampleJArr=["data1","data2","data3"];
app.get('/test', function(req,res){
res.render('testfile',{
 'mJsonArr': sampleJArr
});

在EJS文件(testfile.ejs)中,代码 - :

<div>
  <!--Printing the JSON array. It prints  -->
  <p>JSON.stringify(mJsonArr)</p>
  <button onClick="myFunc">Take test</button>
</div>
<script>
  function myFunc(){
    var JsonData= <%= mJsonArr[0] %>
    console.log(JsonData)
  }
</script>

错误:-Uncaught ReferenceError:未定义myFunc     在HTMLButtonElement.onclick

但是当我试图在myFunc中做一个控制台(&#34;某些字符串&#34;)时,它没有给出错误。只有当我在脚本标签内访问mJsonArr时,我才会收到UncaughtRefrence错误。如何在脚本标记内访问传递的mJsonArr?请贡献。三江源。

1 个答案:

答案 0 :(得分:0)

您无法在脚本代码中访问mJsonArr [0]的原因是因为EJS只是将<%= mJsonArr[0] %>替换为data1,这意味着您生成的html将类似

<div>
  <!--Printing the JSON array. It prints  -->
  <p>JSON.stringify(mJsonArr)</p>
  <button onClick="myFunc">Take test</button>
</div>
<script>
  function myFunc(){
    var JsonData= data1
    console.log(JsonData)
  }
</script>

其中有2分是错误的

  1. 的onClick =&#34; myFunc的&#34;
  2. 这需要更改为onClick =&#34; myFunc()&#34;。否则它永远不会调用。

    1. var JsonData = data1
    2. 这不是将字符串值&#39; data1&#39; 分配给变量。它将名为&quot; data1&#39; 的变量的值赋给变量JsonData。

      正确的方法应该是

      <div>
        <!--Printing the JSON array. It prints  -->
        <p>JSON.stringify(mJsonArr)</p>
        <button onClick="myFunc()">Take test</button>
      </div>
      <script>
        function myFunc(){
          var JsonData= '<%= mJsonArr[0] %>'
          console.log(JsonData)
        }
      </script>
      

      希望它可以帮到你