在node.js中发布数据

时间:2014-07-17 08:48:19

标签: javascript node.js npm webstorm

我有一个包含以下内容的HTML文件:

<form method="post" action="localhost:3000/post">
   <input name="user[name]" type="text"/>
   <button type="submit">sub</button>
</form>

在我的节点app.js文件中,我写了这一行用于发布:

app.post("/post" ,function(req ,res ){
   console.log(req.body.user.name);
   res.send(req.body.user.name);
});

但我无法发布这些数据。

搜索后我发现我必须将这些行添加到节点文件中:

var bodyParser = require('body-parser');
app.use(express.bodyParser());

我用“npm install body-parser”安装它。但是发生错误。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

如果您使用快递4,则不再将bodyParser与其捆绑在一起。 所以你必须改变这一行:

app.use(express.bodyParser());

有了这个:

app.use(bodyParser());

您可以在此处找到更多信息和示例:

https://github.com/expressjs/body-parser

答案 1 :(得分:1)

FOR SERVER PART

如果您已成功安装body-parsernpm-install

在app.js中添加这些行应该可以正常工作

var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());

如果发出警告

body-parser deprecated urlencoded: explicitly specify "extended: true" for extended parsing

使用以下

app.use(bodyParser.urlencoded({
   extended: true
}));

在您的客户中

在您的HTML中,您说action="localhost:3000/post"。 我认为这改为

如果您必须在同一台服务器上发出请求,请

/ post

OR

action =“http:// localhost:3000 / post 如果您向其他服务器发出请求。

答案 2 :(得分:0)

尝试一下这个谎言

要安装sudo尝试,因为我发现安装问题的问题有时没有:

sudo npm install body-parser

然后在你的代码中,如果上面没有失败,那就是这个:

var app = express().use(require('body-parser')());
app.post("/post" ,function(req ,res ){
   console.log(req.body.user.name);
   res.send(req.body.user.name);
});