lostAstronaut lostAstronaut -4 years ago 103
Node.js Question

res.redirect from POST

For some reason I cant redirect to /blog once my login is completed. In my login controller I have the following.

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');

}

}

};


The 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


updated to working code

Answer Source

You can't make a redirection after an AJAX. You need to do it yourself in Javascript.

server

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'});

     }

     ...

}

client

$(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

This should work.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download