-3

了解しました。このサーバーを実行すると、次のようになります。

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);

しかし、それでも同じエラーが発生します。

4

1 に答える 1

3

net.connectionHTTPサーバーではなく、プレーンなTCPソケットを作成します。

代わりに必要http.createServerな場合、引数として受け入れる関数は、送信されたデータのみを含む単純なオブジェクトを取得しません。モジュールのマニュアルを読み、httpリクエストオブジェクトを処理する方法を確認する必要があります。

node.jsホームページに例があります(下にスクロールするだけです)。

リクエストイベントnode.jsのPOSTデータの抽出については、APIドキュメントも参照してください。

于 2013-02-03T20:28:51.627 に答える