我想访问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?请贡献。三江源。
答案 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分是错误的
这需要更改为onClick =&#34; myFunc()&#34;。否则它永远不会调用。
这不是将字符串值&#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>
希望它可以帮到你