res.redirect от POST
По какой-то причине я не могу перенаправить на / блог, когда мой вход в систему завершен. В моем контроллере входа у меня есть следующее.
module.exports = {
post: function(req, res) {
var login = req.body['login'];
if (login && req.body['login']['password'] == "password") {
console.log('Granted access');
res.send({redirect: '/blog'});
}
else {
console.log('wrong password');
res.redirect('back');
}
}
};
JQuery AJAX
$(document).ready ->
$('#login-button').click () ->
$.ajax
url: '/login'
type: 'POST'
data: $('#Password').serialize()
dataType: 'json'
success: (data, textStatus, jqXHR) ->
if typeof data.redirect == 'string'
window.location = data.redirect
обновлен до рабочего кода
3 ответа
Вы не можете сделать перенаправление после AJAX. Вы должны сделать это самостоятельно в Javascript.
сервер
post: function(req, res) {
var login = req.body['login'];
app.use(express.bodyParser());
if (login && req.body['login']['password'] == "tom") {
var loginPassword = req.body['login']['password'];
console.log(loginPassword);
console.log('Granted access');
res.send({redirect: '/blog'});
}
...
}
клиент
$(document).ready ->
$('#login-button').click () ->
$.ajax
url: '/login'
type: 'POST'
data: $('#Password').serialize()
dataType: 'json'
success: (data, textStatus, jqXHR) ->
if typeof data.redirect == 'string'
window.location = data.redirect
Это должно работать.
ПОЧТЫ перенаправляются на GET. Вы не можете перенаправить с POST на POST; Вы могли бы переслать это, но это было бы странно. Я рекомендую добавить логику в ваш маршрут GET, которая будет обрабатывать вход в систему, а не вход в систему пользователя.
Кроме того, 304, вероятно, означает, что ваш ответ кэшируется вашим браузером, потому что вы использовали 301 (постоянное перенаправление, очень плохое при входе в систему и т. Д.; используйте 302).