2016-03-11 5 views
3

Я пытаюсь создать простой обработчик формы, используя экспресс. Я попробовал этот код для моей формы:Не удается POST/ошибка с помощью экспресс

<form class="form" action="/" method="post" name="regForm">    
    <div class="form-group"> 
     <input type="text" name="username" class="form-control" id="username" placeholder="Username"> 
    </div> 
    <button type="submit" class="btn btn-default">Submit</button> 
</form> 

А вот мой app.js код:

const port = 3000; 

var express = require('express'), 
    app = express(), 
    server = require('http').createServer(app); 
var bodyParser = require('body-parser'); 

app.use(express.static(__dirname + '/public')); 

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

app.use(bodyParser.json()); 

app.post('/',function(req,res){ 
    var username = req.body.username; 
    var html = 'Hello:' + username; 
    res.send(html); 
    console.log(html); 
}); 

server.listen(port); 

Я получаю ошибку «CAN NOT POST /» после отправки формы. Я пропустил что-то вроде модуля?

+0

ваши/ваш дом загружается ... вы пытались пост в/тесте, к примеру? –

ответ

4

Таким образом, вы должны попробовать

const port = 3000; 

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

app.use(express.static(__dirname + '/public')); 

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

app.use(bodyParser.json()); 

app.get('/', function(req, res){ 
    res.render('form');// if jade 
    // You should use one of line depending on type of frontend you are with 
    res.sendFile(__dirname + '/form.html'); //if html file is root directory 
res.sendFile("index.html"); //if html file is within public directory 
}); 

app.post('/',function(req,res){ 
    var username = req.body.username; 
    var htmlData = 'Hello:' + username; 
    res.send(htmlData); 
    console.log(htmlData); 
}); 

app.listen(port); 

То, что вы должны иметь в виду для будущих Ref:

  1. Вы расширяли URL-адрес закодировать истинной
  2. Вы не имеющего любой запрос на получение вашей формы
  3. Вы использовали HTML с именем v ariable, который является одним из плохих практик

Благодарность & Cheers

+0

Спасибо, это действительно сработало. Большое вам спасибо за советы. – dtem052996

+0

Этот ответ был большой помощью для меня !!!!! Много, большое спасибо незнакомцу. – AhabLives

0

Кажется, здесь хорошо работает.

Единственная ошибка, я нашел здесь:

extended: true;

Вы должны удалить точку с запятой в конце.

Кроме того, вам не нужно действие = "/" в теге формы, только FYI.

Смежные вопросы