Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

app.post() not working with Express

I get a problem with Express, I try to use the app.post() function but it's not working and I don't know why...

Though I included the bodyParser()...

The problem: Page load without response, no error message. I don't see the console.log()...

app.js :

var express = require('express')
    , routes = require('./routes')
    , user = require('./routes/user')
    , postProvider = require('./postProvider.js')
    , http = require('http')
    , path = require('path')
    , compass = require('node-compass')
    , hash = require('./auth').hash;

var app = express();

app.configure(function () {
    app.set('port', process.env.PORT || 3000);
    app.set('views', __dirname + '/views');
    app.set('view engine', 'jade');
    app.use(compass());
    app.use(express.favicon());
    app.use(express.logger('dev'));
    app.use(express.bodyParser());
    app.use(express.methodOverride());
    app.use(app.router);
    app.use(express.static(path.join(__dirname, 'public')));
    app.use(express.cookieParser('dsqdq edsds'));
    app.use(express.session());
});

app.configure('development', function () {
    app.use(express.errorHandler());
});

app.get('/admin', function(req, res){
    res.redirect('login');
});

app.get('/login', function(req, res){
    res.render('login');
});

app.post('/login', function(req, res){
    console.log('test');
});

app.get('/', routes.index);

http.createServer(app).listen(app.get('port'), function () {
    console.log("Express server listening on port " + app.get('port'));
});

login.jade :

extends layout

block content
  h1 Login
  h3 "tj" and "foobar"
  form(method="post", action="/login")
    input(type="text", placeholder="Username", autofocus="true", name="username")
    br
    input(type="password", placeholder="Password", name="password")
    br
    input(type="submit", value="login")
like image 640
tonymx227 Avatar asked Feb 09 '13 09:02

tonymx227


People also ask

What is app use () in Express?

use(): The app. use() function is used to mount the specified middleware function (are the functions that have access to the request object and response object, or we can call it a response-request cycle) at the path which is being specified.

What is difference between GET and POST method in Express?

Both GET and POST method is used to transfer data from client to server in HTTP protocol but Main difference between POST and GET method is that GET carries request parameter appended in URL string while POST carries request parameter in message body which makes it more secure way of transferring data from client to ...


1 Answers

I don't find any issue with app.post code !!

app.post('/login', function(req, res){
    console.log('test');
    res.end(); // end the response
});

One suggestion is that you should end each response send to client , otherwise your server become unresponsive.

like image 165
Ashish Avatar answered Oct 14 '22 06:10

Ashish