Node.jsで、ASP.NETやC#の場合と同様に、(クライアント側の)htmlボタンonclickイベントからサーバー側の関数を呼び出す完全な基本例が必要です。
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);
_
上記のコードは、NodeのWebアプリケーションフレームワークであるExpressのインスタンスを開始します。 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);
_