2014-10-29 55 views
0

我想从客户端接收数据,所以我使用express 4和中间件body-parser。 但我输入网址:本地主机:5555 /书,页面显示消息:名称:未定义, 我输入网址:本地主机:5555 /书/ form.html,页面显示消息不能发布/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

谢谢!我解决了它。 – 2014-10-30 02:08:39

0

我不使用html,我换成了玉。 而我使用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);