12

たとえば、クライアント側に JavaScript 関数があるとします。

function getLocation() {
    var latitude = ...;
    var longitude = ...;
}

座標は、Google などへの関数呼び出しを使用して取得されます。この情報を Node.js サーバーに送信するにはどうすればよいですか?

4

5 に答える 5

15

最も簡単な方法は?Expressをセットアップし、クライアント側のコードをAjax経由で通信させます(たとえば、jQueryを使用)。

(function() {
  var app, express;

  express = require("express");

  app = express.createServer();

  app.configure(function() {
    app.use(express.bodyParser());
    return app.use(app.router);
  });

  app.configure("development", function() {
    return app.use(express.errorHandler({
      dumpExceptions: true,
      showStack: true
    }));
  });

  app.post("/locations", function(request, response) {
    var latitude, longitude;
    latitude = request.body.latitude;
    longitude = request.body.longitude;
    return response.json({}, 200);
  });

  app.listen(80);

}).call(this);

クライアント側では、次のように呼び出すことができます。

var latitude = 0
  , longitude = 0; // Set from form

$.post({
  url: "http://localhost/locations",
  data: {latitude: latitude, longitude: longitude},
  success: function (data) {
    console.log("Success");
  },
  dataType: "json"
});

このコードは単なる例であることに注意してください。エラー処理などを行う必要があります。

お役に立てば幸いです。

于 2012-06-20T20:29:05.817 に答える
5

Web アプリケーションの他のサーバー側プログラムと同じように、HTTP 要求を作成します。

XMLHttpRequest オブジェクトを使用するか、 を生成し<form>てから送信するか、その他のさまざまな方法でこれを行うことができます。

于 2012-06-20T08:25:03.063 に答える
2

(ソフト) リアルタイム機能が必要な場合は、Socket.io ライブラリの使用をお勧めします。ソケットを使用すると、ノードはデータをクライアント側スクリプトにプッシュすることもできます。

于 2012-06-20T08:26:06.367 に答える
1

NowJSはあなたにぴったりだと思います。例:

// On the Node.JS server

var nowjs = require("now");
var everyone = nowjs.initialize(httpServer);

everyone.now.getServerInfo = function(callback){
  db.doQuery(callback);
}

// In the browser

<script>

now.getServerInfo(function(data){
  // data contains the query results
});

</script>

変数と関数を共通の名前空間 (つまり、nowオブジェクト) に、クライアントからサーバーへ、およびその逆に配置できます。

于 2012-06-20T08:29:08.963 に答える
0

RPCが必要だと思います。node modules セクションには、RPC をカバーするセクションもありますDNodeをご覧になる必要があると思います。ブラウザ セクションの DNode を見てください。

于 2012-06-20T11:09:28.950 に答える