使用app.post和req.body获取未定义

时间:2016-06-20 16:54:23

标签: javascript node.js express

我的req.body.number未定义。我查看了之前的帖子,但它仍然不适合我。我只想在下一页看到输入的数字。

节点js

//Sending UDP message to TFTP server
//dgram modeule to create UDP socket
var express= require('express')
var fs= require('fs')
var util = require('util')
var bodyParser = require('body-parser')
var app = express()

// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))

// parse application/json
app.use(bodyParser.json())

app.get('/', function(req, res) {
    var html = fs.readFileSync('index2.html');
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.end(html);
});

app.post('/', function(req, res) {
    console.log(req.body.number);
});

app.listen(3000, "192.168.0.172");
console.log('Listening at 192.168.0.172:3000')

HTML

<html>
  <body>
    <h1>Reading in Value</h1>
    <form action="/" method="post" enctype='multipart/form-data'>
    <br/>
    <label>Enter a UDP command in hex</label>
    <br/><br/>
    <input type="number" name="number" id="number">
    <br/><br/>
    <input type="submit" value="Submit" name="submit">
    </form>
  </body>
</html>

2 个答案:

答案 0 :(得分:2)

您在表单中使用enctype='multipart/form-data'导致问题。

目前,body-parser不支持multipart/form-data。因此,req.body未定义。

因此,如果您不必以该格式上传文件,最好将其更改为application/x-www-form-urlencoded

答案 1 :(得分:0)

只需更改

&#13;
&#13;
<form action="/" method="post" enctype='multipart/form-data'>

to

<form action="/" method="post" enctype='application/x-www-form-urlencoded'>
&#13;
&#13;
&#13;

享受:)