2016-01-13 15 views
5

मुझे http.post से जेसन प्राप्त करने में कोई समस्या है। के यह स्पष्ट थोड़ा करते हैं: यह मेरा घटक फ़ाइल है:कोणीय 2 http.post और अपरिभाषित 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; 

सर्वर मेरे लिए एक संदेश देता है: "प्राप्त डेटा: अपरिभाषित" और मैं क्यों req.body.login अपरिभाषित है पता नहीं है। क्या आप मेरी मदद कर सकते हैं? पहले ही, आपका बहुत धन्यवाद।

पुनश्च: एक ही जब मैं

"login": "zupa" 
बजाय

login: "zupa" 
+1

जब आप सर्वर पक्ष पर req.body लॉग आउट करते हैं तो आपको क्या मिलता है। – inoabrian

+1

कृपया 'req' –

+0

की सामग्री पोस्ट करें अरे, उस स्थिति में मेरे पास '[ऑब्जेक्ट ऑब्जेक्ट]' है। जब मैं 'console.log का उपयोग करता हूं (" डेटा प्राप्त हुआ: "JSON.stringify (req.body)) 'मेरे पास' {"{\" लॉगिन \ "है: \" zupa \ "}": ""}' तो ऐसा लगता है जैसे पार्सिंग में कुछ गड़बड़ है। – elzoy

उत्तर

5

चूंकि आप JSON का उपयोग कर रहे उचित हेडर स्थापित करना चाहिए का उपयोग करें।

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

असाधारण! मैं अपने jquery में इस हेडर प्रकार का उपयोग कर रहा था, लेकिन यहां मैंने कई ट्यूटोरियल्स में टाइप किया था, जहां वे जेसन फाइलें भी भेज रहे थे (इसलिए मैं थोड़ी उलझन में था)। वैसे, कभी-कभी मैं अपने दिमाग का उपयोग करना भूल जाता हूं: पी धन्यवाद! – elzoy

0

चेक स्वीकार किए जाते हैं जवाब यहाँ Angular2 - set headers for every request

यह आपके अनुरोध संसाधित करने के लिए ताकि आप हर एक अनुरोध बनाने के लिए हेडर लिखने की जरूरत नहीं है एक कस्टम http ग्राहक भी शामिल है।

संबंधित मुद्दे