快速bodyParser

Node.js和Express有一个很大的问题。

我想使用我的请求的body元素,但我不知道如何在我的程序中使用bodyParser() ; 它不只是app.use()

你自己看:

 requestServer = function(){ var express = require('express'); this.ex = express; //this.app = require('express')(); this.app = express(); this.server = require('http').createServer(this.app); this.io = require('socket.io').listen(this.server, {log: false}); this.socket = []; this.app.post('/test/', this.testFunction.bind(this)); this.io.sockets.on('connection', this.socketConnection.bind(this)); this.app.use(express.bodyParser()); }; ... requestServer.prototype.positionChange = function(req, res){ console.log(req.body); // says its undefined??? console.log(req.body.name); // also undefined :( }; ... var server = new requestServer(); server.listen(6667); 

我究竟做错了什么?

如果你想使用nodejs,express和bodyParser,我build议你明确一下用于请求的方法。 你的意思是使用get方法还是post? 请记住要根据您在沟通中获得的信息来回答。

我想你要使用post方法,因为已经为post方法和get方法的查询创build了主体parsing器 。

—客户端:只是写一个表单元素指定它使用post方法。 给每个input元素一个名字。

  <form method="POST" action="/readRequest"> <input type="text" name="email" hint="email" value="" size="40"/> <inpnut type="submit" value="request" /> </form> 

—节点方:将你想要捕获/ readRequest的中间件放入,用“。”读取值。 运算符请求元素

 function (req, res, next){ console.log('Email received: '+req.body.email); next(); } 

由于安全漏洞,BodyParser不再被广泛使用。 它现在集成在Express中。 不要使用它。

不应该这样

 var server = new requestServer(); server.listen(6667); 

是这个

 var server = new requestServer(); server.app.listen(6667); 

由于应用程序是返回的快捷对象。 你可以发布完整的代码调用positionChange