将变量从服务器端传递到客户端JavaScript Node.js

时间:2016-02-13 12:23:30

标签: javascript node.js d3.js ejs

index.js

var outputFilename = 'C:/askhere/public/javascripts/data.json';
                    fs.writeFile( outputFilename, JSON.stringify(json_obj), "utf8", function(err) {
                        if(err) {
                            console.log(err);
                        } else {
                            console.log("Jobs Data updated in " + outputFilename + " file.");
                        }
                    });
res.render('graph',{uname:req.session.userName,gdata:JSON.stringify(json_obj)});

graph.ejs

                    <script type="text/javascript" src="/javascripts/graph.js">

                    </script>

graph.js

            /*var data = [{"label":"1990", "value":16},
    {"label":"1991", "value":56},
    {"label":"1995", "value":16},
];    var data;
    d3.json("data.json", function(error, json) {
        if (error) {return console.log(error);}
        else {data = json; console.log("data updated in graph.js");}
    });

现在这段代码从graph.js文件中的服务器获取“数据”更新,但我无法在graph.ejs文件中看到结果

1 个答案:

答案 0 :(得分:0)

您可以使用

 d3.json('http://domain.com/data.json', function(data) {
     // actual logic...
});

从服务器访问作为json的数据。

否则您还可以添加内联脚本:

<script type="text/javascript">
     var data = <%=gdata%>;
</script>

附注:您不能拥有带有src属性的内联脚本

<script type="text/javascript" src="/javascripts/graph.js">
    var data = <%=gdata%>; // This code will be discarded
</script>

另外,我建议你阅读这个question,这实际上可能是你的根本问题。