2012-06-20 6 views
9

は、私は、座標は、Googleまたは類似の関数呼び出しを使用して取得されNode.jsではどのようにクライアント側のJavaScriptと通信するのですか?例えば

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

JavaScript関数を持つクライアント側を想定します。この情報をNode.jsサーバーにどのように送信できますか?

+0

何らかのテンプレートシステムを使用してみませんか?それはあなたの人生を楽にします – elclanrs

+3

@elclanrsどのようにテンプレート化するのが助けになるでしょうか? – Raynos

答えて

12

最も簡単な方法は? 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" 
}); 

注意。あなたはエラー処理などを解決しなければならないでしょう。

希望に役立ちます。

4

ウェブアプリケーションの他のサーバーサイドプログラムと同じように、HTTPリクエストを行うことによって、

XMLHttpRequest objectで、または<form>を生成して送信したり、さまざまな方法で送信できます。

+3

またはWebSocketを開きます。 – Raynos

2

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

+0

彼はおそらくsocket.ioを必要としません。 – Raynos

+5

母、なぜQuentinのポストでWebSocketsについて言及しましたか? :D。それはまさにsocket.ioが提供するものですが、クロスブラウザのサポートがあります。 –

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オブジェクト)に変数と関数を入れることができます。

+0

nowjsは、データのいくつかの小さな断片を取得する必要がある場合には複雑なソリューションです – Raynos

+0

しかし、彼は彼がほんの数個のデータしか必要としないと言っているわけではない。彼はちょうど例を与えました –

+1

今、Nowjs.comサーバーはダウンし、githubコードは2歳以上です。また、 'npm install now'をビルドすることができず、Pythonをコンパイルする必要がありました。 – shailenTJ

関連する問題