Подтвердить что ты не робот

Node.js/Экспресс-сообщение формы req.body не работает

Я использую выражение и не могу получить данные формы из bodyParser. Независимо от того, что я делаю, это всегда появляется как пустой объект. Вот мой экспресс-код app.js(единственное, что я добавил, это путь app.post внизу):

var express = require('express');

var app = module.exports = express.createServer();

// Configuration

app.configure(function(){
    app.set('views', __dirname + '/views');
    app.set('view engine', 'jade');
    app.use(express.bodyParser());
    app.use(express.methodOverride());
    app.use(app.router);
    app.use(express.static(__dirname + '/public'));
});

app.configure('development', function(){
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); 
});

app.configure('production', function(){
    app.use(express.errorHandler()); 
});

// Routes

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

app.post('/', function(req, res){
    console.log(req.body);
    res.sendfile('./public/index.html');
});

app.listen(3010);

Вот моя форма HTML:

<!doctype html>
<html>
  <body>
<form id="myform" action="/" method="post" enctype="application/x-www-form-urlencoded">
  <input type="text" id="mytext" />
  <input type="submit" id="mysubmit" />
</form>
  </body>
</html>

Когда я отправляю форму, req.body - пустой объект {}

Стоит отметить, что это происходит, даже если я удалю атрибут enctype из тега формы

... Есть ли что-то, чего я не вижу/делаю неправильно?

Я использую node v0.4.11 и выражаю v2.4.6

4b9b3361

Ответ 1

<form id="myform" action="/" method="post" enctype="application/x-www-form-urlencoded">
  <input type="text" name="I_appear_in_req_body" id="mytext" />
  <input type="submit" id="mysubmit" />
</form>

Тело сообщения HTTP является хэшем ключа/значения всех элементов управления формы с атрибутом name, а значение - значением элемента управления.

Вам нужно указать имена всех ваших входов.

Ответ 2

Это также связано с типом контента. см. объект console.log(req).

'content-type': 'application/json; charset=UTF-8’  // valid.

'content-type': 'application/JSON; charset=UTF-8’  // invalid & req.body would empty object {}.

Чтобы проверить тип содержимого с помощью console.log(req.is('json'))//return true/false

Я думаю, что "charset = UTF-8" в пренебрежимо малом.