2014-10-29 3 views
0

클라이언트로부터 데이터를 받기를 원하므로 Express 4와 미들웨어 body-parser를 사용합니다. 하지만 입력 URL : 로컬 호스트 : 5555/책 페이지 메시지 표시 : 메시지를 보여 5555/책/form.html 페이지 는 게시 할 수 없습니다 : 이름 : 정의되지 않은 및 I 입력 URL : 로컬 호스트를 /book/form.html. 내 코드는 다음과 같습니다.발견 된 페이지가 없습니다. (express 4 + body-parser + form + post)

form.html
<form action='./book' method='post'> 
    <input type='text' name='name' value='fred'> 
    <input type='text' name='tel' value='0926xxx572'> 
    <input type='submit' value='Submit'> 
</form> 

server.js 내가 보는 것과

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

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

app.post('/book', function(req,res){ 
    console.log(req.body.name); 
    console.log(req.body.tel); 

    res.send('Name: '+req.body.name); 
    res.send('country: '+req.body.tel); 
    res.end(); 

}); 

app.listen(5555); 

답변

0

, 당신은 /book 그렇게 표현하는 경로에 app.post을하고있는 것은 POST 요청을 기대하고있다.

그러나 URL이 http://localhost:5555/book 일 때 GET 요청을 수행하므로 오류가 발생합니다.

양식을 표시하는 페이지 (GET 요청이므로 app.get)와 게시물 요청을 수락하기위한 하나의 페이지가 있어야합니다.

+0

감사합니다! 나는 그것을 해결했다. –

0

나는 html을 사용하지 않고 jade로 바꿨다. 그리고 app.route()를 사용합니다.

form.jade

form(action='./book' method='post') 
input(type='text' name='name' value='fred') 
input(type='text' name='tel' value='0926xxx572') 
input(type='submit' value='Submit') 

server.js

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

app.set('views', './views'); 
app.set('view engine', 'jade'); 
app.engine('jade', require('jade').__express); 

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

app.route('/book') 
    .get(function(req, res) { 
    //res.send('Get a random book'); 
    res.render('form'); 
    }) 
    .post(function(req, res) { 
    res.send('Name: '+req.body.name +'<br>'+ 'tel: '+req.body.tel); 
    }) 

app.listen(5555);