对象在node.js简单服务器中变为未定义

时间:2013-02-03 20:27:16

标签: javascript jquery node.js

好吧,所以当我运行这个服务器时:

var net = require('net');

var server = net.createServer(function (data) {
    console.log("Hello " + data.name);
});

server.listen(1337, '127.0.0.1');

然后在chrome上浏览此页面(来自文件,而不是域名):

<!DOCTYPE html>
<html lang="en">
    <head>
        <script type="text/javascript" src="jquery.js"></script>
        <script type="text/javascript">
            var data = new function(){
                this.name = "John";
            };

            $.post('http://127.0.0.1:1337/', data);
        </script>
    </head>
    <body>

    </body>
</html>

我在服务器上获得以下输出:

Hello undefinied

我的问题是,当我将数据对象的名称发送到服务器时,为什么我的数据对象名称未定义?


编辑:所以我将服务器更改为:

var http = require('http');

var server = http.createServer(function (data) {
    console.log("Hello " + data.name);
});

server.listen(1337, '127.0.0.1');

并将我的客户端脚本更改为:

var data = {
                name: "John"
            };
            $.post('http://127.0.0.1:1337/', data);

但我仍然遇到同样的错误。

1 个答案:

答案 0 :(得分:3)

net.connection创建一个普通的TCP套接字,而不是HTTP服务器。

你想要http.createServer,它接受​​的函数作为参数不会得到一个只包含提交数据的简单对象。您需要阅读http模块的手册,并了解如何处理请求对象。

有一个例子on the node.js homepage(只需向下滚动)。

另请参阅request eventsnode.js Extracting POST data的API文档。