2016-06-29 22 views
0

Ich habe einen Express-Server die folgenden params und RoutenExpress 4.13 blank json Anfrage mit Körper-Parser

var express = require('express'); 
var bodyParser = require('body-parser'); 
var router = express.Router(); 
var app = express(); 
app.use(router); 
app.use(bodyParser.urlencoded()); 
var jsonParser = bodyParser.json({ type: 'application/json'}); 

router.post('/login', jsonParser, function(req, res) { 
    console.log('request body : ' + req.body); 
}); 

und mein Ajax-Rückruf ist wie folgt verwendet werden

var user = { 
     username: $("#_username").val(), 
     password: $("#_password").val() 
    } 
    var jsonText = JSON.stringify(user); 
    console.log(jsonText); 
    $.ajax({ 
     type: "POST", 
     url: "http://localhost:3002/login", 
     async: true, 
     dataType: 'json', 
     data: jsonText, 
     cache: false, 
     success: function(data, textStatus, xhr) { 
     }, 
     error: function(xhr, textStatus, errorThrown) { 
     } 
    }); 

Ich verstehe nicht, warum Ich bekomme nichts als ein leeres Array im Body-Typ und bin dem Body-Parser-Beispiel auf npm fast genau gefolgt.

Irgendeine Idee, warum es das tut?

Danke!

Antwort

0

Sie haben nicht eine Instanz des application/json Parser erstellt, pro the docs:

var express = require('express') 
var bodyParser = require('body-parser') 

var app = express() 

// create application/json parser 
var jsonParser = bodyParser.json() 

// create application/x-www-form-urlencoded parser 
var urlencodedParser = bodyParser.urlencoded({ extended: false }) 

Diese Codezeile ändert die akzeptiert „Typen“ der json Parser zu akzeptieren bereit ist - Sie sind die Einstellungen zu ändern (wenn Sie einige benutzerdefinierte json Objekte haben):

var jsonParser = bodyParser.json({ type: 'application/json'}); 

Es wäre auch gut, zu bestätigen, dass Ihre Post-Anforderung an alle feuert ...

router.post('/login', jsonParser, function(req, res) { 
    console.log("posted!"); 
} 
+0

Ihre Antwort half mir, das Problem zu finden, der Server war nicht das Problem, die Ajax-Anfrage war, der ContentType wurde nicht auf JSON eingestellt, daher war es auf der Suche nach XML (weil es der Standard ist) – Viralwarrior012