我需要Node.js中一个完整的基本示例,从(客户端)html按钮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-->
答案 0 :(得分:34)
以下是使用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
的{{1}}中提交该表单,您将获得结果:
/
要运行一个函数,只需将它放在{ field1: 'form contents', field2: 'second field contents' }
处理程序中,如下所示:
POST
如果您不想使用Express,则可以使用本机HTTP模块,但您必须自己解析HTTP请求正文。
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();
});