将服务器端数据传递给客户端节点js的参考错误?

时间:2017-02-05 15:31:32

标签: javascript node.js

我正在经历一些在Node js中向客户端发送服务器端数据的例子。但后来我尝试了下面的内容,它给了我参考错误。我想知道我在哪里弄错了?谢谢。

server.js -

var express = require('express')
require('highcharts');
var app = express();
app.engine('html', require('ejs').renderFile);
dirname = "C:/Users/user/WebstormProjects/untitled/public";

require("jsdom").env("", function(err, window) {
    if (err) {
        console.error(err);
        return;
    }

    var $ = require("jquery")(window);
});
app.listen(3000, function () {
    console.log('Example app listening on port 3000!')
});



app.get('/', function (req, res) {
    var data = 5;
    res.render("data.html",{Data:data});

});

data.html -

<html>
<head>

    <script src="http://code.jquery.com/jquery-1.11.3.min.js" ></script>
    <script src="http://code.highcharts.com/highcharts.js" ></script>
    <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>


</head>
<body>
<div id="container" style="width:100%; height:400px;"></div>

<script type="text/javascript">
    var d = JSON.stringify(Data);
    console.log(d);
</script>


</body>
</html>

1 个答案:

答案 0 :(得分:0)

详细说明@ T.J.Crowder的评论:

<强> 1。您需要了解执行代码的人员以及执行代码的时间:

  • 虽然server.js中的代码是在服务器上的每个请求上执行的,但
  • 您在data.html中的代码(标记中的内容)最终将在客户端浏览器中执行。最终,这意味着浏览器可能不支持Javascript或更可能拒绝执行它。此外,它只会在代码实际下载后执行。

<强> 2。从中得到了什么?

因为代码是由两个不同的Javascript引擎执行的,甚至可能在两台不同的机器上执行,所以您不能像我们的代码假设那样轻松地将数据从一个传递到另一个。现在基本上有两种选择:

  • 您可以将数据内联到您的server.js服务于客户端的html中。这基本上要求你在发送之前修改html。您可以通过手动将一些数据写入文件来尝试这种方法,以确定它是否有效。然后,您需要弄清楚如何最好地操纵您发送的html,使用模板引擎可能对此有所帮助。

    var myData = {key:“value”};

  • 使用Javascript和数据传递的更常见方法是使用AJAX或异步Javascript和XML。在这里,您的客户端将包含向/从服务器发送/请求数据的代码。您可以使用jQuerybasic Javascript

第3。 AJAX示例代码

server.js

app.get('/', function (req, res) {
    res.render('data.html');
});

app.get('/data', function (req, res) {
    res.json({ data: 5 });
});

client.js(data.html的脚本标记中的代码,请注意此代码假定在客户端中加载了jQuery.js库)

$.get('/data', function (data) { console.log('got data', data); });