【发布时间】:2019-05-22 15:53:03
【问题描述】:
我正在创建一个基本的登录系统,因为服务器端使用 NodeJS,但客户端没有。我必须在服务器端进行任何使用 NPM 包的调用。问题是我不知道如何从客户端 JavaScript 调用服务器端 NodeJS 函数。基本上我不能从客户端浏览器调用存储在服务器上的函数。
【问题讨论】:
标签: javascript node.js glitch-framework
我正在创建一个基本的登录系统,因为服务器端使用 NodeJS,但客户端没有。我必须在服务器端进行任何使用 NPM 包的调用。问题是我不知道如何从客户端 JavaScript 调用服务器端 NodeJS 函数。基本上我不能从客户端浏览器调用存储在服务器上的函数。
【问题讨论】:
标签: javascript node.js glitch-framework
创建一个 REST API 并将请求参数映射到您需要使用的特定函数调用。请参阅 this tutorial 创建 REST API。
【讨论】:
像这样在你的 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);
}
});
【讨论】:
您可以通过调用服务器上的 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')})
【讨论】:
使用 Socket.io
在 JS 中
let xhr = new XMLHttpRequest(); xhr.open('GET', '/user/sessionDestroy'); xhr.send();
在 Node.JS 中
【讨论】: