2012-12-30 5 views
2
명시

를 사용할 때 POST 데이터를 얻을 수 없습니다. 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

본문 파서 미들웨어를 활성화해야합니다. 경로를 구성하기 전에 이것을 삽입하십시오.

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. [name of data]를 사용하여 실제로 데이터에 액세스 할 수 있습니다.

req.body.firstname 

당신은 또한 당신의 템플릿 페이지에 데이터를 전송하는 res.render 사용할 수 있습니다 예를 들어, 당신은 "FIRSTNAME"를 보냈다. 예를 들어, 이것은 템플릿 언어로 렌더링 된 색인 페이지로 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); 
관련 문제