在Node.js中如何与客户端JavaScript通信?

时间:2012-06-20 08:22:51

标签: javascript node.js

例如假设客户端我有一个JavaScript函数

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

使用对Google等的函数调用来检索坐标。如何将此信息传输到Node.js服务器?

5 个答案:

答案 0 :(得分:13)

最简单的方法?设置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"
});

注意这段代码只是一个例子;你必须解决错误处理等问题。

希望有所帮助。

答案 1 :(得分:5)

通过发出HTTP请求,就像使用Web应用程序中的任何其他服务器端程序一样。

您可以使用XMLHttpRequest object执行此操作,或者通过生成<form>然后提交它或其他各种方法来执行此操作。

答案 2 :(得分:2)

如果您需要(软)实时功能,我建议您使用Socket.io library。使用套接字,node也可以将数据推送到客户端脚本。

答案 3 :(得分: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对象)中,从客户端到服务器,反之亦然。

答案 4 :(得分:0)

我认为你需要RPCnode modules section also has a section covering RPCDNode。我想你应该看看DNode on the browser section。看看{{3}}。