У меня проблема с получением json из http.post. Давайте сделаем это ясно немного: Это мой компонент файла:Angular2 http.post и undefined req.body
import {Component} from 'angular2/core'
import {Http, HTTP_PROVIDERS, Headers} from 'angular2/http'
@Component({
selector: 'login-form',
template: `
<form (ngSubmit)="onSubmit()">
<button type="submit">Wyslij</button>
</form>
`
})
export class LoginFormComponent {
constructor(public http: Http) { }
onSubmit() {
var headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
var data = JSON.stringify({
login: "zupa",
});
this.http.post('http://localhost:8080/send', data, {headers: headers})
.subscribe();
}
}
Мой server.js файл
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var routes = require('./routes/index');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.use(express.static(path.join(__dirname, 'node_modules')));
app.use(express.static(path.join(__dirname)));
app.set('view engine', 'ejs');
app.engine('html', require('ejs').renderFile);
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', routes);
app.get('*', function(req, res, next) {
res.render("index.html", {title: 'Aplikacja'});
});
app.listen(8080, function() {
console.log("Starting at localhost:8080");
});
module.exports = app;
Как вы можете видеть, это обычно генерируется экспресс-файл модуля сервера.
Это содержание моего файла маршрутов.
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index.html', {title: 'Infam'});
});
router.post('/send', function(req, res, next) {
console.log("Received data: " + req.body.login);
});
module.exports = router;
Сервер возвращает мне сообщение: «Received данные: неопределенную», и я понятия не имею, почему req.body.login не определено. Вы можете мне помочь? Заранее спасибо.
PS: То же самое, когда я использую
"login": "zupa"
вместо
login: "zupa"
Что вы получаете, когда вы выходите из системы только на стороне req.body на стороне сервера. – inoabrian
, пожалуйста, напишите содержимое 'req' –
Эй, в этом случае у меня есть [object object] '. Когда я использую 'console.log (« Полученные данные: «JSON.stringify (req.body))' i have '{" {\ "login \": \ "zupa \"} ":" "}', поэтому он выглядит например, что-то не так с синтаксическим разбором. – elzoy