Вход из fancybox: перезагрузите страницу ТОЛЬКО в случае успешного входа? - PullRequest
0 голосов
/ 08 июля 2011

У меня есть форма авторизации внутри fancybox, которая делает свое дело через ajax. Мне нужно, чтобы при успешном входе в систему страница перезагрузилась, но не при неудачном входе в систему. Раньше у меня было

'onClosed': function() {   parent.location.reload(true); }

на моем fancybox, но это перезагрузит устройство, даже если пользователь просто вручную закроет fancybox без входа в систему.

У меня есть эта функция для входа:

$("#loginform").bind("submit", function() {
        if ($("#username").val().length < 1 || $("#password").val().length < 1) {
            $("#login_error").show();
            $.fancybox.resize();
            return false;
        }

        $.fancybox.showActivity();

        $.ajax({
            type        : "POST",
            cache       : false,
            url         : "/login/ajax-login.php",
            data        : $(this).serializeArray(),
            success: function(data) {

                switch(data){
                    case "1"://exito
                        function() {window.location.reload(true);}
                        //THIS DOESN'T WORK
                    break;
                    case "0"://error
                        $.fancybox("ERROR. El usuario no existe o es incorrecto.");
                    break;
                }
            }
        });

        return false;
    });                       

Как видите, когда данные равны 1, вход в систему успешен, но ничего не произойдет. Если я вручную перезагружаю страницу, я вижу, что вход был успешным, хотя.

1 Ответ

1 голос
/ 08 июля 2011

A switch оператор не принимает обратные вызовы.Ваш код выглядит так, как будто вы думали, что они сделали.

Вам нужно запустить эту функцию ...

function() {window.location.reload(true);}

... в тот момент, когда вы только что определили анонимную функцию, которая неприсваивается любой переменной.

Самый простой способ - отбросить функцию-обертку ...

window.location.reload(true);

... или, если вы настаиваете на наличии функции (почему?), вы можете использовать...

(function() {window.location.reload(true);})();

Большинство людей используют первое для сокрытия информации, но вы не объявляете новые переменные, так что это будет бессмысленно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...