2016-04-23 111 views
0

你好我有一個表單,我發送到服務器,但是當它到達處理程序。我嘗試打印出內容,但未定義正文。請能有人我做錯了什麼。req.body.name is undefined

<form action="/myactive" method="POST"> 
<input type="radio" name="gender" value="Male"> Male<br> 
<input type="radio" name="gender" value="Female"> Female 
<button type="submit" class="btn btn-primary btn-md">Medium</button> 
</form> 

及以下我的服務器端是:

var express = require('express'); 
var app = express(); 
var bodyparser = require('body-parser'); 

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

app.use(bodyparser.urlencoded({ extended: false })); 

app.use(express.static(__dirname + '/public')); 

app.get('/', function(req, res) { 
    console.log('Index page'); 
}); 

app.post('/myaction', function(req, res){ 
    console.log('Name: '+req.body.name); //returns undefined 
    res.end("Welcome"); 
}); 

app.listen(app.get('port'), function(){ 
    console.log('Listening on port '+app.get('port')); 
}); 

但在控制檯上它打印

Name is undefined. 
+0

是'req.body.name'未定義或'req.body'?因爲在你的代碼示例中,你寫了'console.log('Name:'+ req.body);' –

+0

@ t.niese我嘗試了兩次,但返回了undefined req.body.name – user3497437

+0

req.body返回一個包含對象的數組 – user3497437

回答

3

你需要與你有佈線後您的形式指定相同action獲得的價值服務器。所以/myactive -> /myaction。此外req.body對象中沒有name屬性。當你設置的形式name="gender"這意味着gender屬性將附加到req.body對象

<form action="/myaction" method="POST"> 
<input type="radio" name="gender" value="Male"> Male<br> 
<input type="radio" name="gender" value="Female"> Female 
<button type="submit" class="btn btn-primary btn-md">Medium</button> 
</form> 

而且,您可以使用下面的代碼

app.post("/myaction", function(request, response) { 
    console.log("Gender is:", request.body.gender); 
    response.sendStatus(200) 
}); 
+0

當試圖打印req.body它返回' [對象,對象]'我如何打印實際內容 – user3497437

+0

@ user3497437使用'JSON.stringify(request.body)' – jahnestacado

+0

@ user3497437如果您想打印對象的實際內容,只需單獨使用console.log: 'console.log(req.body);'或使用逗號代替字符串連接:'console.log('Body:',req.body);' – JJJ

-1

試試這個console.log('Name: '+req.body.gender);

+0

'req.params'用於路徑('/ user /:id')中的參數。 –

2

您沒有與任何輸入name="name"

<input type="radio" name="gender" value="Male"> Male<br> 
<input type="radio" name="female" value="Female"> Female 

您可以獲得req.body.genderreq.body.female

爲了得到正確的值,這樣做:

<input type="radio" name="gender" value="Male"> Male<br> 
<input type="radio" name="gender" value="Female"> Female 

那麼你就可以req.body.gender

+0

當試圖打印req.body它返回[對象,對象]我如何打印實際內容 – user3497437

+0

@ user3497437你添加了'app.use(bodyparser.json());'作爲@vkstack提到? – sadrzadehsina

+0

@ user3497437你不能用'req.body'獲得實際值,你需要用'req.body.gender'獲得它們 – sadrzadehsina

-1

當你使用檢索您的路線選擇性別req.body確保使用body-parser解析在體內的含量......

app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 

您應該按照與上面相同的順序定義上述內容。

你的數據是req.body.gender