35

ログインが完了すると、何らかの理由で /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

作業コードに更新

4

3 に答える 3

67

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

これはうまくいくはずです。

于 2012-07-20T07:03:58.140 に答える
4

POST は GET にリダイレクトされます。POST から POST にリダイレクトすることはできません。転送することはできますが、それは奇妙です。ログインしたユーザーとログインしていないユーザーを処理するロジックを GET ルートに追加することをお勧めします。

また、304 は、301 (永続的なリダイレクト、ログインが非常に悪いなど。302 を使用) を使用したため、応答がブラウザーによってキャッシュされていることを意味する可能性があります。

于 2012-07-20T13:45:43.310 に答える