我对此完全迷失了;我正在使用NodeJS来获取JSON,我需要将变量传递给我的页面并让JavaScript使用数据。
app.get('/test', function(req, res) {
res.render('testPage', {
myVar: 'My Data'
});
那就是我的Express代码(出于测试目的非常简单);现在使用EJS,我想收集这些我知道要呈现在页面上的数据,
<%= myVar %>
但是我需要能够在JavaScript中收集这些数据(如果可能在.js文件中),但现在只是在我尝试过的“警告”框中显示变量
在翡翠中就像alert('!{myVar}')
或!{JSON.stringify(myVar)}
。我可以在EJS中做类似的事情吗?我不需要像<input type=hidden>
javascript 这样的字段并采用该字段的值。如果有人可以帮助,不胜感激
您可以使用此(客户端):
<script>
var myVar = <%- JSON.stringify(myVar) %>;
</script>
您还可以使用EJS渲染.js
文件:
app.get('/test.js', function(req, res) {
res.set('Content-Type', 'application/javascript');
res.render('testPage', { myVar : ... });
});
但是,模板文件(testPage
)仍需要具有.html
扩展名,否则EJS将找不到它(除非您另行告诉Express)。
正如@ksloan在评论中指出的那样:您必须小心myVar
包含的内容。如果其中包含用户生成的内容,则可能会使您的网站保持打开状态,以进行脚本注入攻击。
防止发生这种情况的可能解决方案:
<script>
function htmlDecode(input){
var e = document.createElement('div');
e.innerHTML = input;
return e.childNodes.length === 0 ? "" : e.childNodes[0].nodeValue;
}
var myVar = JSON.parse(htmlDecode("<%= JSON.stringify(myVar) %>"));
</script>
问题内容: 我有一个PHP会话变量,在整个会话过程中仍然有效。在开头部分,我包含了我的JavaScript文件。 如果需要以下内容,如何将会话变量传递到JavaScript文件中。 由于无法在JavaScript文件中识别出,因此上面的代码不起作用。因此,我必须放入PHP文件本身,但是如何将其保留在JavaScript文件中? 问题答案: 在您的PHP文件中,您可以将用户设置为全局变量: 在包含外
问题内容: 我有类似下面的代码: 但是,该变量未在ActionListener类的范围内定义。如何传递变量? 问题答案: 除了Hovercraft的答案外,您还应注意,您不会被迫对侦听器使用匿名类。气垫船的答案代码类似于以下代码:
问题内容: 我有Google地图提供的JavaScript值,需要将其保存在MySQL数据库中。 其实我有变量 我需要将该变量传递给PHP变量lugar 问题答案: 如果要在页面转换时进行操作,则可以通过表单或在URL中传递它,然后仅使用或接收变量。 如果您需要无缝完成它,那么您可能需要考虑使用AJAX。
问题内容: 如果我有一个指令,我可以这样调用它 我该如何访问?我在函数中使用时会得到实际的字符串。当我检查html时,实际上说。 问题答案: 尝试 然后 演示:柱塞
问题内容: 我有一个用JS计算的值,希望将其作为输入表单的一部分传递给PHP脚本。我如何将JS值的JS值作为POST参数获取? 基本上,在提交时,我需要将var通过post传递到下一个脚本。 想到的第一个想法是创建一个不可见的输入表单,该表单中包含值并与该表单一起输入,这可能吗? 问题答案: 是的,您可以在JavaScript代码中使用和设置该隐藏字段的值,以便将其与其他表单数据一起发布。
问题内容: 我有一个端点,该端点在url中带有一个值,并产生一些将插入div的内容。我想使用JavaScript变量来构建url 。但是,是作为字符串而不是的值传递的。如何将JavaScript变量的值传递给? 问题答案: 您无法在Jinja中评估JavaScript。您正在尝试在Jinja呈现时在服务器端生成url,但您引用的变量仅在客户端浏览器上运行的JavaScript中可用。 在客户端上构