2012-12-30 30 views
2

這裏是我的代碼我無法得到POST數據:當我使用快遞

var express = require('express'); 
var app = express(); 

app.get('/:name', function(req,res){ 
    res.setHeader('Content-Type','text/html'); 
    res.send('<form action="/" method="POST"><input type="text" name="self"/><input type="submit"/></form>'); 
}); 

app.post('/',function(req,res){ 
    res.send(req.body.self); 
}); 

app.listen(8080); 

我叫本地主機:8080 /範例名稱

,寫輸入的內在的東西,我點擊提交按鈕。它轉到localhost:8080,但節點返回錯誤,如下所示:

TypeError: Cannot read property 'self' of undefined 
    at /home/yusuf/Masaüstü/node/ue.js:10:19 
    at callbacks (/home/yusuf/Masaüstü/node/node_modules/express/lib/router/index.js:160:37) 
    at param (/home/yusuf/Masaüstü/node/node_modules/express/lib/router/index.js:134:11) 
    at pass (/home/yusuf/Masaüstü/node/node_modules/express/lib/router/index.js:141:5) 
    at Router._dispatch (/home/yusuf/Masaüstü/node/node_modules/express/lib/router/index.js:169:4) 
    at Object.router [as handle] (/home/yusuf/Masaüstü/node/node_modules/express/lib/router/index.js:32:10) 
    at next (/home/yusuf/Masaüstü/node/node_modules/express/node_modules/connect/lib/proto.js:190:15) 
    at Object.expressInit [as handle] (/home/yusuf/Masaüstü/node/node_modules/express/lib/middleware.js:31:5) 
    at next (/home/yusuf/Masaüstü/node/node_modules/express/node_modules/connect/lib/proto.js:190:15) 
    at Object.query [as handle] (/home/yusuf/Masaüstü/node/node_modules/express/node_modules/connect/lib/middleware/query.js:44:5) 

回答

4

您需要啓用body parser中間件。在配置路由之前插入此項。

app.use(express.bodyParser()); 

您也可以在此處配置其他的東西,如視圖引擎,靜態目錄等。例如,

app.set('views', __dirname + '/views'); 
app.set('view engine', 'swig'); 
app.use(express.bodyParser()); 
app.use(express.methodOverride()); 
app.use(app.router); 
app.use(express.static(__dirname + '/public')); 
+0

我已經使用第一個代碼,但它不是解決。 – user1870012

1

req.body讓您得到在POST發送的數據。然後您可以使用req.body [數據名稱]實際訪問數據。例如,如果您發送了「名字」:

req.body.firstname 

您也可以使用res.render將數據發送到您的模板頁面。例如,這將firstname發送到您的模板語言呈現的索引頁面。

res.render('index', {fname: req.body.firstname}); 
0

您需要bodyParser。這裏是你的確切的代碼,與解析器添加,並按預期工作:

var express = require('express'); 
var app = express(); 

// parses POST bodies: 
app.use(express.bodyParser()); 

app.get('/:name', function(req,res){ 
    res.setHeader('Content-Type','text/html'); 
    res.send('<form action="/" method="POST"><input type="text" name="self"/><input type="submit"/></form>'); 
}); 

app.post('/',function(req, res){ 
    res.send(req.body.self); 
}); 

app.listen(8080);