我知道你可以像这样获取 ejs 文件中变量的值,
<h1><%= title %></h1>
如果我要在同一个 ejs 页面的 onload javascript 函数中使用相同的标题变量,我将如何使用它。例如
<script>
window.onload(){
var s = <%= title %>
alert(s);
}
</script>
这个函数产生一个控制台错误说
未捕获的语法错误:意外的标识符
虽然我可以看到变量的实际值
要在脚本中输出它,结果需要被理解为代码。
因为你没有注意到的价值title
,我假设以下示例:
res.render('view', { title: 'My Site' });
当你使用var s = <%= title %>
,这会导致创建如下语句:
var s = My Site
在这之中,My
and Site
被解释为仅由意外空格分隔的单独变量。当达到Site
它们之间没有运算符,因此Unexpected identifier
你得到了。
它需要创建以下语句:
var s = "My Site"
所以客户端脚本也可以将其理解为字符串值。
实现这一目标的一个技巧是使用JSON.stringify() https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify。由于 JSON 的语法取自 JavaScript 的表达式和文字,因此 JavaScript 引擎能够在许多上下文中理解结果(尽管有它自己的字符串、对象等):
var s = <%- JSON.stringify(title) %>
但请注意,切换到使用<%- %>
vs. <%= %>
。这将禁用 HTML 编码,这是不必要的,并且可能会导致在<script>
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)