Как получить параметры запроса POST? - PullRequest
728 голосов
/ 19 апреля 2011

Вот моя простая форма:

<form id="loginformA" action="userlogin" method="post">
    <div>
        <label for="email">Email: </label>
        <input type="text" id="email" name="email"></input>
    </div>
<input type="submit" value="Submit"></input>
</form>

Вот мой Express.js / Node.js код:

app.post('/userlogin', function(sReq, sRes){    
    var email = sReq.query.email.;   
}

Я пытался sReq.query.emailили sReq.query['email'] или sReq.params['email'] и т. д. Ни один из них не работает.Все они возвращаются undefined.

Когда я переключаюсь на вызов Get, он работает, так что ... есть идеи?

Ответы [ 18 ]

7 голосов
/ 18 ноября 2016

Я искал именно эту проблему.Я следовал всем советам выше, но req.body все еще возвращал пустой объект {}.В моем случае, это было что-то столь же простое, как HTML, который был неправильным.

В html вашей формы убедитесь, что вы используете атрибут 'name' в своих входных тегах, а не просто 'id'.В противном случае ничего не анализируется.

<input id='foo' type='text' value='1'/>             // req = {}
<input id='foo' type='text' name='foo' value='1' /> // req = {foo:1}

Моя идиотская ошибка - ваша выгода.

5 голосов
/ 18 февраля 2014

Вы не должны использовать app.use (express.bodyParser ()) .BodyParser - это объединение json + urlencoded + mulitpart.Вы не должны использовать это, потому что multipart будет удален в Connect 3.0.

Чтобы решить эту проблему, вы можете сделать это:

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

Очень важно знать, что приложение.use (app.router) следует использовать после json и urlencoded, иначе это не сработает!

3 голосов
/ 29 апреля 2015

Поток запросов работал для меня

req.on('end', function() {
    var paramstring = postdata.split("&");
});

var postdata = "";
req.on('data', function(postdataChunk){
    postdata += postdataChunk;
});
2 голосов
/ 21 сентября 2016

Я могу найти все параметры, используя следующий код для запросов POST и GET .

 var express = require('express');
    var app = express();
    const util = require('util');  
    app.post('/', function (req, res) {
        console.log("Got a POST request for the homepage");
        res.send(util.inspect(req.query,false,null));
    })
1 голос
/ 19 января 2018
var express        =         require("express");
var bodyParser     =         require("body-parser");
var app            =         express();

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

app.get('/',function(req,res){
  res.sendfile("index.html");
});
app.post('/login',function(req,res){
  var user_name=req.body.user;
  var password=req.body.password;
  console.log("User name = "+user_name+", password is "+password);
  res.end("yes");
});
app.listen(3000,function(){
  console.log("Started on PORT 3000");
})
1 голос
/ 11 октября 2017
Post Parameters can be retrieved as follows-

app.post('/api/v1/test',Testfunction);
http.createServer(app).listen(port, function(){
console.log("Express server listening on port " + port)
});

function Testfunction(request,response,next)
{
   console.log(request.param("val1"));

   response.send('HI');
}
0 голосов
/ 07 марта 2018

Вы используете 'req.query.post' с неверным методом 'req.query.post' работает с 'method = get' 'method = post' работает с body-parser.

Просто попробуйте этоизменив сообщение, чтобы получить

<form id="loginformA" action="userlogin" method="get">
<div>
    <label for="email">Email: </label>
    <input type="text" id="email" name="email"></input>
</div>
<input type="submit" value="Submit"></input>  
</form>

и в экспресс-коде использовать 'app.get'

0 голосов
/ 06 ноября 2017

использовать пакет express-fileupload

var app = require('express')();
var http = require('http').Server(app);
const fileUpload = require('express-fileupload')

app.use(fileUpload());

app.post('/', function(req, res) {
var email = req.body.email;
res.send('<h1>Email :</h1> '+email);
});

http.listen(3000, function(){
  console.log('Running Port:3000');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...