【问题标题】:POST data using node.js使用 node.js 发布数据
【发布时间】:2014-07-03 09:59:00
【问题描述】:

我正在尝试使用 POST 方法将表单数据发送到节点服务器。 这是我的 HTML 代码,

    <html>
    <head>
            <title>
                Node Architecture
            </title>
    </head>
<body>
    <h1>Node Architecture</h1>
    <h3>Enter Your name.</h3>
    <form action="/" method="POST">
    <input type="text" name="eventname" />
    <input type="submit" value="Go" />
</form>

</body>
</html>

这是我的节点应用,index.js

var app = require('express')();
var http = require('http').Server(app);
//var io = require('socket.io')(http);
//var qs = require('querystring');

app.get('/', function(req, res){
  res.sendfile('index.html');
});
app.get('/events', function(req, res){
  res.sendfile('events.html');
});
app.get('/movie', function(req, res){
  res.sendfile('movie.html');
});

app.post('/', function(req, res) {
    var name = req.body.eventname;
    console.log(name);
});



http.listen(3000, function(){
  console.log('listening on *:3000');
});

现在当我点击提交时,我收到如下错误消息,

TypeError: Cannot read property 'eventname' of undefined at Object.handle 

如何将输入的名称打印到控制台?

【问题讨论】:

    标签: javascript node.js express socket.io


    【解决方案1】:

    Express 默认不解析请求正文,您必须使用中间件来执行此操作。

    试试这个。

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

    另外,您应该阅读此article。它解释了与常见的正文解析方法相关的一些问题(及其解决方案)。

    【讨论】:

      【解决方案2】:

      将这些行添加到您的 app.js 中。

      需要正文解析器。

      var bodyParser = require('body-parser');
      

      放在你的第一个 app.get 之前会更好。

      app.use(bodyParser.json());
      app.use(bodyParser.urlencoded());
      

      祝你好运。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-05-26
        • 1970-01-01
        • 2017-06-05
        • 2018-10-11
        • 2018-01-07
        • 1970-01-01
        • 2015-11-28
        相关资源
        最近更新 更多