将服务器变量传递到客户端脚本

时间:2017-10-19 23:21:43

标签: json node.js parsing variables express

我正在运行一个快速应用程序,使用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(&#34;red&#34;);
        console.log('buttonclicked in script: ' + buttonclicked);
        showResults(&#34;red&#34;);

    </script>

1 个答案:

答案 0 :(得分:1)

根据docs

  • <%=将值输出到模板中(HTML转义)
  • <%-将未转义的值输出到模板

因此,您必须在模板中使用<%-而不是<%=来输出未转义的数据。

<%
if (typeof(buttonclicked) !== "undefined" && buttonclicked){

%>

    <script>
        var buttonclicked = JSON.parse("<%- buttonclicked %>");
        console.log('buttonclicked in script: ' + buttonclicked);
        showResults("<%- buttonclicked %>");

    </script>


    <%}  

%>