【问题标题】:How to call a server-side NodeJS function using client-side JavaScript如何使用客户端 JavaScript 调用服务器端 NodeJS 函数
【发布时间】:2019-05-22 15:53:03
【问题描述】:

我正在创建一个基本的登录系统,因为服务器端使用 NodeJS,但客户端没有。我必须在服务器端进行任何使用 NPM 包的调用。问题是我不知道如何从客户端 JavaScript 调用服务器端 NodeJS 函数。基本上我不能从客户端浏览器调用存储在服务器上的函数。

【问题讨论】:

    标签: javascript node.js glitch-framework


    【解决方案1】:

    创建一个 REST API 并将请求参数映射到您需要使用的特定函数调用。请参阅 this tutorial 创建 REST API。

    【讨论】:

      【解决方案2】:

      像这样在你的 nodejs 应用程序中创建一个路由:

      app.get('/users', function(req, res) {
       // Your function to be called goes here.
      });
      

      现在您可以使用 ajax 从客户端 javascript 调用此代码。像这样:

      $.ajax({
       type: 'GET'
       url: 'http://localhost:8000/users',
       success: function(response) { 
        console.log(response);
       },
       error: function(xhr, status, err) {
         console.log(xhr.responseText);
       }
      });
      

      【讨论】:

      • 我明白了,我可以在 app.get 中放置多个函数,还是需要为每个函数更改“/users”?
      • 您可以将任意数量的回调传递给 app.get('/users', cb1, cb2, ...) 等路由。 This 回答已经给出了很好的说明。
      【解决方案3】:

      您可以通过调用服务器上的 API(用于某些特定工作的特定 url)来做到这一点。在 JS 中,您需要 ajax。 Have a look here

      //url be the api like '/api/something/'
      $("button").click(function(){
        $.ajax({url: "demo_test.txt", success: function(result){
          // your response
        }});
      });
      

      在 Node 中,我们有 axios 会做同样的事情 例子

      axios.post('api/tobackend/function',{user:'a',password:'b'})
           .then((res)=>console.log('response from server'))
      

      在支持的情况下,您可能需要路由来处理请求。

      router.post('api/tobackend/function',(reqs,resp)=>{console.log('backend')})
      

      【讨论】:

        【解决方案4】:
        1. 使用 Socket.io

        2. 在 JS 中

          let xhr = new XMLHttpRequest(); xhr.open('GET', '/user/sessionDestroy'); xhr.send();

        在 Node.JS 中

        【讨论】:

          猜你喜欢
          • 2013-06-28
          • 2018-05-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-30
          • 1970-01-01
          • 2017-06-27
          • 2015-01-10
          相关资源
          最近更新 更多