2013-02-09 4 views
3

я получаю проблемы с экспресс, я пытаюсь использовать функцию app.post(), но это не работает, и я не знаю, почему ...app.post() не работает с экспрессом

Хотя я включая bodyParser() ...

Проблема: загрузка страницы без ответа, без сообщения об ошибке. Я не вижу 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") 
+0

Да, добавьте тело-парсер – kta

ответ

0

Ваш запрос пост отправить /test (с вами 'вы использовали атрибут action вашей формы), в то время как ваш экспресс-слушатель прослушивает любые почтовые запросы на /login.

Ваш код должен выглядеть следующим образом:

block content 
    h1 Login 
    h3 "tj" and "foobar" 
    form(method="post", action="/login") 

Если вы хотите, чтобы это работало!

+0

Это была ошибка ... Я обновил сообщение. – tonymx227

2

Я не нашёл никаких проблем с кодом app.post!

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

Одно из предложений заключается в том, что вы должны завершить каждый ответ, отправляемый клиенту, иначе ваш сервер перестанет отвечать на запросы.

+0

ОП изменил шаблон нефрита, и теперь все это O.k. :) – drinchev

+0

Я добавил функцию end(), но у меня такая же проблема ... – tonymx227

+0

Я нашел проблему, но я не понимаю, когда комментирую «app.use (compass());» он работает ... Когда я раскомментирую, он не работает ... В чем проблема с Compass? – tonymx227

0

Я скопирую 'router.post() ...' в другой файл js и изменил маршрут в app.js, он сработал! Но метод router.post() все еще является предупреждением. Иногда это кажется предупреждение в webstorm, но он может действительно работать!

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