Angular2 http.post和undefined req.body

从http.post接收json有问题。 让我们清楚一点:这是我的组件文件:

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; 

如您所见,这是由express模块​​服务器文件生成的标准。

这是我的“路线”文件的内容。

 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; 

服务器返回一条消息给我:“收到的数据: undefined ”,我不知道为什么req.body.login是未定义的。 你可以帮我吗? 先谢谢你。

PS:当我使用的时候也一样

 "login": "zupa" 

代替

 login: "zupa" 

您应该设置适当的标题,因为您正在使用JSON。

 headers.append('Content-Type', 'application/json'); 

在这里检查接受的答案Angular2 – 为每个请求设置标题

它包括一个自定义的http客户端来处理你的请求,所以你不必为每一个请求写你的头。