Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从Node.js中的客户端(例如html按钮onclick)调用服务器端函数?_Javascript_Html_Node.js - Fatal编程技术网

Javascript 如何从Node.js中的客户端(例如html按钮onclick)调用服务器端函数?

Javascript 如何从Node.js中的客户端(例如html按钮onclick)调用服务器端函数?,javascript,html,node.js,Javascript,Html,Node.js,在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'); va

在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-->

下面是一个使用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数据。然后,它将侦听路由
/
上的
POST
请求

<form method="post" action="/">
  <input type="test" name="field1">
  <input type="test" name="field2">
  <input type="submit">
</form>
要运行函数,只需将其放入
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);

您需要使用AJAX、form POST或websockets通过HTTP与服务器进行通信。我在Google上搜索了很多,但无法获得正确的示例,@SaadAbdullah:您不明白什么?Node.js是一个更薄的web平台;你需要了解底层技术(HTML和HTTP)。@SLaks:thanx为了你的回答,先生,我正在为我的网络编程学期项目制作维基百科的复制品,(意味着,我是node.js的noob)我在某个点上卡住了,我只是想知道如何使用客户端事件中的服务器端函数?@SaadAbdullah:你不能从另一台计算机调用一台计算机上的函数。您需要通过网络发送请求。app.get函数在哪里?这只是一个示例,不是完整的解决方案。您可以在文档中找到如何使用它:我已经检查了API,找不到任何关于调用服务器端函数的示例。但对于您的答案,请回答:)
app.use(bodyParser())
//现在已弃用,您现在需要单独调用这些方法
app.use(bodyParser.urlencoded())
app.use(bodyParser.json())-没有示例显示如何在Express提供的onClick语句中命名脚本。
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);