如何从 javascript 调用 node.js 服务器端方法?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/14951251/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-24 18:25:33  来源:igfitidea点击:

How to call node.js server side method from javascript?

javascriptnode.js

提问by user1629448

I'm new to node.js but I know somewhat about socketstream web framework by using this I can easily call a server side node.js method from JavaScript. I don't know how to do this without using that framework. How can I call the node.js method from JavaScript?

我是 node.js 的新手,但我对 socketstream web 框架有所了解,通过使用它,我可以轻松地从 JavaScript 调用服务器端 node.js 方法。如果不使用该框架,我不知道如何做到这一点。如何从 JavaScript 调用 node.js 方法?

The below code is using socketstream to call server side method. So I want to call the same server side method without using this framework.

以下代码使用 socketstream 调用服务器端方法。所以我想在不使用这个框架的情况下调用相同的服务器端方法。

ss.rpc('FileName.methodName',function(res){ 
    alert(res);         
});

回答by Salman

I'd suggest use Socket.IO

我建议使用Socket.IO

Server-side code

服务端代码

var io = require('socket.io').listen(80); // initiate socket.io server

io.sockets.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' }); // Send data to client

  // wait for the event raised by the client
  socket.on('my other event', function (data) {  
    console.log(data);
  });
});

and client-side

和客户端

<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io.connect('http://localhost'); // connec to server
  socket.on('news', function (data) { // listen to news event raised by the server
    console.log(data);
    socket.emit('my other event', { my: 'data' }); // raise an event on the server
  });
</script>

Alternatively,you can use a router function which calls some function on specific request from the client

或者,您可以使用路由器功能,该功能根据客户端的特定请求调用某些功能

var server = connect()
    .use(function (req, res, next) {
      var query;
      var url_parts = url.parse(req.url, true);
      query = url_parts.query;

      if (req.method == 'GET') {
        switch (url_parts.pathname) {
            case '/somepath':
            // do something
            call_some_fn()
            res.end();
            break;
          }
        }
    })
    .listen(8080);

And fire AJAXrequest using JQuery

AJAX使用 JQuery触发请求

$.ajax({
    type: 'get',
    url: '/somepath',
    success: function (data) {
        // use data
    }
})