2016-08-04 9 views
0

Während unter Ajax-Aufruf, sehe ich keine Post-Daten auf der Knoten-Server-Seite.Keine Post-Daten im Knoten-Server

$.ajax({ 
    type: "POST", 
    url: window.location.origin + "/api/books", 
    data: { 
     title: "Javascript some good partd", 
     author: "Douglas crockford", 
     releaseDate: new Date(2013, 4, 2).getTime() 
    }, 
    dataType: "json", 
    success: function(data) { 
     console.log(data); 
    } 
}); 

Nach etwas suchen, fand ich heraus, dass es wegen der körper Parserkonfiguration sein könnte, aber nicht in der Lage, es richtig zu bekommen. Nachfolgend finden Sie die Konfiguration des Knotenservers.

app.configure(function() { 
    app.use(bodyParser()); 
    app.use(bodyParser.urlencoded()); 
    app.use(bodyParser.json()); 
    app.use(express.methodOverride()); 
    app.use(app.router); 
    app.use(express.static(path.join(application_root, 'site'))); 
    app.use(express.errorHandler({dumpExceptions: true, showStack: true})); 
}); 

Und API-Aufruf ist:

app.post('/api/books', function (req, res) { 
    console.log(req.body); 
    var book = new BookModel({ 
     title: req.body.title, 
     author: req.body.author, 
     releaseDate: req.body.releaseDate 
    }); 
    return book.save(function (err, response) { 
     if (!err) { 
      return res.send(book); 
     } else { 
      console.log(err); 
     } 
    }); 
}); 

req.body wird als undefiniert protokolliert. Kann mir bitte jemand helfen, das Problem zu beheben?

Antwort

1

Löschen Sie die Funktion app.configure.

Der gesamte Code darin kann in dieser Datei schweben.

Meine beste Schätzung wäre, dass es nicht diese Funktion abfeuert.

Ich neige dazu, diesen Code dsharris

var bodyParser = require('body-parser'); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: true })); 
+0

Dank zu verwenden !! Ich konnte es mit diesem Code arbeiten lassen. – user3400887