我在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时,登录成功但不会发生任何事情。如果我手动重新加载页面,我看到登录成功了。
答案 0 :(得分:1)
switch
statement不接受回调。您的代码看起来就像您认为的那样。
您需要运行该功能......
function() {window.location.reload(true);}
...目前您刚刚定义了一个尚未分配给任何变量的匿名函数。
最简单的方法是删除包装函数......
window.location.reload(true);
...或者如果你坚持有功能(为什么?)你可以使用......
(function() {window.location.reload(true);})();
大多数人使用前者来隐藏信息,但你没有声明新的变量,所以它没有意义。