从fancybox登录:仅在登录成功时重新加载页面?

时间:2011-07-08 08:43:12

标签: ajax login fancybox

我在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 个答案:

答案 0 :(得分:1)

switch statement不接受回调。您的代码看起来就像您认为的那样。

您需要运行该功能......

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

...目前您刚刚定义了一个尚未分配给任何变量的匿名函数。

最简单的方法是删除包装函数......

window.location.reload(true);

...或者如果你坚持有功能(为什么?)你可以使用......

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

大多数人使用前者来隐藏信息,但你没有声明新的变量,所以它没有意义。