2017-01-19 6 views
-1

Ich habe eine Daten bei angularjs Client. Wenn ich die Daten über $ http.post an den Server sende, kann ich keine Daten auf dem Server lesen. Ich verstehe nicht, wo ich falsch gelaufen bin? Dies ist der Winkelcode:Knoten js Server empfängt keine Daten von angularjs

var data = $.param({ 
     id:$scope.user_id, 
    }); 
alert(JSON.stringify(data)); 
$http.post('/getdetails',data) 

Hier der Server-Code js Knoten ist:

app.post('/getdetails',function(req,res){ 
    console.log(req.body); 
    console.log(req.body.id); 

}); 

Ausgang bei Server-Log:

{} 
undefined 

ich nicht über Daten besorgt bin ich sende, Ich bin nur besorgt, ob es auf dem Server lesbar ist oder nicht.

Danke!

+2

mit [Express] (http://expressjs.com)? Sie müssen eine [body-analysing middleware] (http://expressjs.com/en/4x/api.html#req.body) verwenden. –

+0

Was macht der Status dort? Sie müssen den Status im Fehlerblock behandeln. – Mithun

+0

Ja, ich verwende body-parser – VisheshRaju

Antwort

0

Sie versuchen, Ihre Daten mit $ .param() zu serialisieren, die nur in der GET-Methode und nicht im Post verwendet wird. Senden Sie einfach Ihre JSON-Daten direkt an NodeJS wie folgt aus:

var data = { 
     id:$scope.user_id, 
    }; 
$http.post('/getdetails',data) 

In Ihrem Header angeben:

"Content-Type" : "application/json" 

So ist die letzte Anforderung wird so sein:

$http.post('/getdetails',data,{headers : {"Content-Type" : "application/json"}}) 
+0

Nun, ich habe es versucht und es scheint nicht zu funktionieren !!! Gleiche Ergebnisse herrschen vor. "app.use (bodyParser.urlencoded ({extended: false}));" Ist das der richtige Weg, um bodyparser ?? – VisheshRaju

+0

ja auch diese hinzufügen: app.use (bodyParser.json()); app.use (bodyParser.text()); app.use (bodyParser.urlencoded ({ erweitert: false })); –

+0

Auf diese Weise wird es alle diese Typen basierend auf der Kopfzeile in der Anfrage gesendet –