我正在运行一个快速应用程序,使用EJS作为我的模板引擎。 但是我很难将变量从我的服务器传递到我的客户端脚本中。
我已经尝试过使用JSON.stringify和JSON.parse,正如其他stackoverflow问题所示。
服务器端代码:
.post(function (req, res) { //Is there a better way to update votes than using post request?
if (req.body.buttoncolor === 'red') {
Dilemma.findByIdAndUpdate(dilemmaID, {
$inc: {
red_dilemma_votes: 1
}
}, function (err, dilemma) {
if (err) {
console.log('Error updating votes on dilemma in root: ' + err);
} else {
res.render('index', {
dilemma: dilemma,
buttonclicked: JSON.stringify('red')
})
console.log(JSON.stringify('red'));
console.log('Data from post request in root: ' + dilemma);
}
});
}
客户端代码:
<%
if (typeof(buttonclicked) !== "undefined" && buttonclicked){
%>
<script>
var buttonclicked = JSON.parse(<%= buttonclicked %>);
console.log('buttonclicked in script: ' + buttonclicked);
showResults(<%= buttonclicked %>);
</script>
<%}
%>
这是客户解释它的方式:
<script>
var buttonclicked = JSON.parse("red");
console.log('buttonclicked in script: ' + buttonclicked);
showResults("red");
</script>
答案 0 :(得分:1)
根据docs:
<%=
将值输出到模板中(HTML转义)<%-
将未转义的值输出到模板因此,您必须在模板中使用<%-
而不是<%=
来输出未转义的数据。
<%
if (typeof(buttonclicked) !== "undefined" && buttonclicked){
%>
<script>
var buttonclicked = JSON.parse("<%- buttonclicked %>");
console.log('buttonclicked in script: ' + buttonclicked);
showResults("<%- buttonclicked %>");
</script>
<%}
%>