当前位置: 首页 > 面试题库 >

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

越飞语
2023-03-14
问题内容

我需要在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路由上的请求/

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

然后,如果您提交该表格,则req.body输入route /,将得到结果:

{ 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);


 类似资料:
  • 问题内容: 我是Node.js的新手,但是通过使用它我对套接字流Web框架有了一些了解,我可以轻松地从JavaScript调用服务器端的node.js方法。不使用该框架,我不知道该怎么做。如何从JavaScript调用node.js方法? 以下代码使用套接字流调用服务器端方法。因此,我想在不使用此框架的情况下调用相同的服务器端方法。 问题答案: 我建议使用Socket.IO 服务器端代码 和客户端

  • 问题内容: 可能是一个非常基本的问题,但我似乎找不到简单的答案。 我有一个利用Angular的GET方法,该方法从特定的url()请求一个Promise 。 在此服务器上,我运行可以处理GET请求的快速脚本脚本。 server.js 我可以使用Angular GET方法与URL_OF_INTEREST通信,如下所示: 但是,字段数量,货币,来源和描述需要从Angular客户端应用程序理想地传递。

  • 问题内容: 在以下SSCCE中, 我有一个字符串,其中包含3 秒的HTML 。 我为除第一个之外的所有s 添加了一个属性。 我添加一个按钮,所有的小号除了最后一个,并添加一个JS 事件侦听器,应该改变当前‘样式属性s到(当前的传递给JS功能属性),并在未来的(这是还传递给JS函数)样式属性 我在最后提交一个按钮。我没有为此按钮编写“ 事件” 或“事件监听器” 的属性,因为现在这不是问题。 我打印d

  • 问题内容: 我有一个socket.io服务器正在运行,并且有一个带有socket.io.js客户端的匹配网页。一切正常。 但是,我想知道是否有可能在另一台机器上运行一个单独的node.js应用程序,该应用程序充当客户端并连接到上述的socket.io服务器? 问题答案: 使用Socket.IO-client应该可以做到这一点:https : //github.com/LearnBoost/sock

  • 尝试使用Express将参数从服务器端传递到Node.js中的客户端。 但到目前为止什么都没起作用。你们要怎么做?非常感谢你的帮助:)

  • 我将创建一个身份验证服务器,它本身与一组不同的Oauth2.0服务器交互。Netty似乎是在这里实现网络部分的一个很好的候选者。但在开始之前,我需要澄清一些关于netty的细节,因为我是新手。例行程序如下: > < li> 服务器接受来自客户端的HTTPS连接。 然后,不关闭第一个连接,它通过HTTPS与远程OAuth2.0服务器建立另一个连接并获取数据 毕竟,服务器将结果发送回客户端,客户端应该