出于某种原因,我的登录完成后我无法重定向到/ blog。在我的登录控制器中,我有以下内容。
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
更新为工作代码
答案 0 :(得分:61)
您无法在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
这应该有用。
答案 1 :(得分:4)
POST被重定向到GET。您无法重定向到POST到POST;你可以转发它,但那会很奇怪。我建议在GET路由中添加逻辑,以处理登录用户和未登录用户。
另外,304可能意味着您的浏览器正在缓存您的响应,因为您使用了301(永久重定向,登录时非常糟糕等等;使用302)。
答案 2 :(得分:-3)
您遗失return
:
return res.redirect('/');