GET请求上的NodeJS请求对象为空

我有一个代码,我试图从一个下拉菜单使用获取请求获得一些价值。 但是,当我点击提交,请求对象是空的。 我没有使用body parser和bodyParser.json并在路由之前声明它们,但是请求对象仍然是空的:

 var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); var EventHubClient = require('azure-event-hubs').Client; const bodyParser = require('body-parser') app.use(bodyParser.urlencoded({ extended: true })) app.use(bodyParser.json()) console.log(''); }; app.get('/result', function(req, res){ res.sendFile(__dirname + '/result.html'); }); app.get('/index', function(req,res) { res.sendFile(__dirname + '/index.html'); }); app.get('/getJson', function (req, res) { console.log(req.body); }); http.listen(3000, function(){ console.log('listening on *:3000'); }); 

这里是index.html文件:

 <form id="tableForm" action="/getJson" method="get"> <select class="selectpicker" data-style="btn-info" name="selectpicker"> <optgroup label="Select Table"> <option name="" value="0">Select table</option> <option name="table1" value="1">Table 1</option> <option name="table2" value="2">Table 2</option> <option name="table3" value="3">Table 3</option> </optgroup> </select> <input type="submit" /> </form> 

首先,您需要在index.html页面中将表单方法更改为POST

 <form id="tableForm" action="/getJson" method="get"> ^^^ 

现在,由于方法是在你的HTML页面POST ,所以你必须在这个代码片段中进行修改:

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

这些变化将反映为:

 app.post('/getJson', function (req, res) { console.log(req.body); res.end(); //You must add this line as well. }); 

响应

在index.html中的表单中尝试post方法

您应该使用POST方法传递数据。

 var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); var EventHubClient = require('azure-event-hubs').Client; const bodyParser = require('body-parser') app.use(bodyParser.urlencoded({ extended: true })) app.use(bodyParser.json()) console.log(''); }; app.get('/result', function(req, res){ res.sendFile(__dirname + '/result.html'); }); app.get('/index', function(req,res) { res.sendFile(__dirname + '/index.html'); }); app.post('/getJson', function (req, res) { console.log(req.body); }); http.listen(3000, function(){ console.log('listening on *:3000'); }); 

的index.html

 <form id="tableForm" action="/getJson" method="post"> <select class="selectpicker" data-style="btn-info" name="selectpicker"> <optgroup label="Select Table"> <option name="" value="0">Select table</option> <option name="table1" value="1">Table 1</option> <option name="table2" value="2">Table 2</option> <option name="table3" value="3">Table 3</option> </optgroup> </select> <input type="submit" /> </form> 
Interesting Posts