如何在 Node.js 中从客户端调用服务器端函数(例如.html单击按钮)

How to call a server side function from client side (e.g. html button onclick) in Node.js?

本文关键字:例如 函数 html 单击 按钮 服务器端 调用 Node js 客户端      更新时间:2023-09-26

我需要 Node.js 中一个完整的基本示例,从(客户端)html button onclick 事件调用服务器端函数,就像在 ASP.NET 和 C# 中一样。

我是Node的新手.js并且使用Express框架。

有什么帮助吗?

改进的问题:

服务器端:

var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');
var app = express();
// all environments
app.set('views',__dirname + '/views');
app.set('port', process.env.PORT || 3000);
app.engine('html', require('ejs').renderFile);
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.static(path.join(__dirname, 'public')));
app.set('view engine', 'html');
app.use(app.router);
app.get("/",function(req,res)
{
  res.render('home.html');
});

// development only
if ('development' == app.get('env')) {
  app.use(express.errorHandler());
}
app.get('/', routes.index);
app.get('/users', user.list);
http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});

客户端

 <input type="button" onclick="" />  <--just want to call the serverside function from here-->

下面是一个使用 Express 和 HTML 表单的示例。

var express = require('express');
var app = express();
var http = require('http');
var server = http.createServer(app);
app.use(express.bodyParser());
app.post('/', function(req, res) {
  console.log(req.body);
  res.send(200);
});
server.listen(process.env.PORT, process.env.IP);

上面的代码将启动 Express 的实例,它是 Node 的 Web 应用程序框架。bodyParser()模块用于解析请求正文,因此您可以读取发布数据。然后,它将侦听路由/上的POST请求。

<form method="post" action="/">
  <input type="test" name="field1">
  <input type="test" name="field2">
  <input type="submit">
</form>

如果您提交该表格,req.body 路线/ ,您将获得结果:

{ field1: 'form contents', field2: 'second field contents' }

要运行函数,只需将其放入POST处理程序中,如下所示:

var foo = function() {
  // do something
};
app.post('/', function(req, res) {
  console.log(req.body);
  res.send(200);
  // sending a response does not pause the function
  foo();
});

如果您不想使用 Express,则可以使用本机 HTTP 模块,但您必须自己解析 HTTP 请求正文。

var http = require('http');
http.createServer(function(request, response) {
  if (request.method === 'POST') {
    var data = '';
    request.on('data', function(chunk) {
      data += chunk;
    });
    request.on('end', function() {
      // parse the data
      foo();
    });
  }
}).listen(80);
相关文章: