Как вызвать функцию на стороне сервера с клиентской стороны (например, кнопка html onclick) в Node.js?

Мне нужен полный базовый пример в Node.js вызова функции на стороне сервера (на стороне клиента) html onclick, как и в ASP.NET и С#.

Я новичок в 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-->

Ответы

Ответ 1

Вот пример использования 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. Модуль 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);

Ответ 2

Я думаю, что вам нужно

input type="button" value="submit" onclick="submit form(document.getElementById('form id'),'process.php','createtask');