2016-12-30 48 views
3

我想提出一個Ajax請求,看起來像這樣:快遞狀態越來越request.body爲未定義JSON對象

$.ajax({ 
     url: '/gen', 
     type: 'POST', 
     data: JSON.stringify({'one': 1, 'two':2}), 
     success: function(data) {console.log(this)} 
    }); 

和我的快遞部分看起來是這樣的:

var express = require('express'); 
var app = express(); 
var router = express.Router(); 

app.set('port', (process.env.PORT || 5000)); 

router.post('/gen', function(req, res) { 
    console.log(req.body); 
}); 

這總是輸出undefined在控制檯。

我該如何改變這種情況,以使req.body或req的任何部分包含我試圖發送到代碼的高速部分的信息。

回答

7

您需要使用正文解析器。

var bodyParser = require('body-parser') 

app.use(bodyParser.json()); 

參見:

您可能還需要添加:

contentType: 'application/json', 
.ajax()選項

+0

你硬是幫我我花了8小時的問題。謝謝!!! – TwoShorts

0

要使用使用req.body你必須使用bodyParser中間件,導入這樣的:

var app = express(); 
var bodyParser = require("body-parser"); 
app.use(bodyParser.json()); 

router.post('/gen', function(req, res) { 
    console.log(req.body); 
});