2015-09-30 27 views
0

所以我試圖通過POST提交表單到Express路由,但是當我使用req.query.時,它給了我'未定義'而不是表單值。Node.js表單提交給出未定義的變量

這裏是我的代碼: app.js:

var express = require('express'), 
    path = require('path'), 
    bodyParser = require('body-parser'), 
    vhost = require('vhost'), 
    http = require('http'); 

var blob = require('./model/blobs'); 

var routes = require('./routes/index'), 
    blobs = require('./routes/blobs'), 
    users = require('./routes/users'), 
    marathon = require('./routes/marathon'); 

var app = express(); 

app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'jade'); 

app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(express.static(path.join(__dirname, 'public'))); 

app.use(vhost('www.lsaciasi.lo', routes)); 
app.use(vhost('lsaciasi.lo', routes)); 
app.use(vhost('recrutari.lsaciasi.lo', blobs)); 
app.use(vhost('intern.lsaciasi.lo', users)); 
app.use(vhost('itmarathon.lsaciasi.lo', marathon)); 

app.use(function(req, res, next) { 
var err = new Error('Not Found'); 
err.status = 404; 
next(err); 
}); 

if (app.get('env') === 'development') { 
    app.use(function(err, req, res, next) { 
    res.status(err.status || 500); 
    res.render('error', { 
     message: err.message, 
     error: err 
     }); 
    }); 
} 

app.use(function(err, req, res, next) { 
    res.status(err.status || 500); 
    res.render('error', { 
     message: err.message, 
     error: {} 
    }); 
}); 

module.exports = app; 

blobs.js:

var express = require('express'), 
    bodyParser = require('body-parser'); 
var router = express.Router(); 
var urlencodedParser = bodyParser.urlencoded({ extended: false }) 
router.get('/', function(req, res, next) { 
    res.render('blobs', { title: 'LSAC Iasi | Join Us!' }); 
}); 

router.post('/sendaction', urlencodedParser, function (req, res) { 
    response = { 
     first_name:req.body.nume, 
     last_name:req.body.prenume 
    }; 
    console.log(response); 
    res.send(response); 
}); 

module.exports = router; 

..aand我index.jade的一部分

.container-fluid#aplic 
    .row 
    form(action="/sendaction" method="post" id="form1") 
    h2 Aplică 
     br 
     .textbarr 
     h4 Nume: 
     input(type="text" name="nume" placeholder="Popescu") 
     br 
     .textbarr 
     h4 Prenume: 
     input(type="text" name="prenume" placeholder="Ion") 
     br 
     .textbarr 
     h4 Email: 
     input(type="text" name="email" placeholder="[email protected]") 
     br 
     .textbarr 
     h4 Telefon: 
     input(type="text" name="telefon" placeholder="0743 352 156") 
     br 
     .textbarr 
     h4 Care este viziunea ta desre voluntariat? 
     textarea(type="textarea" name="opinie" placeholder="Cum vezi tu sa (te) ajute actiunile de voluntariat?") 
     br 
     .textbarr 
     h4 De ce LSAC? 
     textarea(type="textarea" name="motivatie" placeholder="Ce te motiveaza sa aplici aici?") 
     br 
    .textbarr 
     button.btn.btn-success(type="submit" form="form1" value="Submit") Trimite 
    br 

而我得到的是:{ first_name: undefined, last_name: undefined }

編輯

我不好,爲first_name:req.query.nume它woldn't工作,但first_name:req.body.nume同樣的問題發生變化,則返回 'undifined'

+1

req.query用於傳遞URL中的值,例如https://www.google.com.br/?gws_rd=ssl#q=req+query+express.js。 「?」後面的所有內容是一個變量裏面req.query – danilodeveloper

+0

要獲得表單值,你必須使用req.body.your_variable – danilodeveloper

+0

好吧,我的壞,對於'first_name:req.query.nume'它不會工作,但'last_name:req。 body.nume'應該沒問題。在我的情況下,它返回'undifined' – user2187390

回答

0

那麼錯誤是在玉的文件。

.... 
.row 
    form(action="/sendaction" method="post" id="form1") 
    h2 Aplică 
    br 
    .textbarr 
     h4 Nume: 
     input(type="text" name="nume" placeholder="Popescu") 
.... 

由於h2置於右form下它會關閉表單標籤,所以我的形式是acctualy空。

h2 Aplică 
form(action="/sendaction" method="post" id="form1") 

現在所有的輸入都是在窗體中,數據已經正確拼接。

1

req.query用來傳遞值的URL,例如:

// URL http://localhost:3000/test/my-id-is-here/edit 
router.post('/test/:id/edit', function(req, res) { 
    console.log(req.query.id); 
    res.send(200); 
} 

在你的情況,設置在每個字段中id HTML屬性的表單中,提交併使用獲得的字段值,F或者例如req.body.email,req.body.nume等等。