web-dev-qa-db-fra.com

Comment appeler une fonction côté serveur depuis le côté client (par exemple le bouton html onclick) dans Node.js?

J'ai besoin d'un exemple de base complet dans Node.js d'appeler une fonction côté serveur à partir d'un événement onclick de bouton html (côté client), tout comme dans ASP.NET et C #.

Je suis nouveau sur Node.js et j'utilise le framework Express.

De l'aide?

QUESTION AMÉLIORÉE:

//du côté serveur :

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'));
});

//Côté client

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

Voici un exemple utilisant Express et un formulaire 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);

Le code ci-dessus démarrera une instance d'Express, qui est un cadre d'application Web pour Node. Le module bodyParser() est utilisé pour analyser le corps de la requête, afin que vous puissiez lire les données de publication. Il écoutera ensuite les requêtes POST sur la route /.

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

Et si vous soumettez ce formulaire, dans req.body Pour l'itinéraire /, Vous obtiendrez le résultat:

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

Pour exécuter une fonction, placez-la simplement dans le gestionnaire POST comme ceci:

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();
});

Si vous ne souhaitez pas utiliser Express, vous pouvez utiliser le module HTTP natif, mais vous devrez analyser le corps de la requête HTTP vous-même.

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);
36
hexacyanide