1
function check_login(){
    var authenticated  = false;
    $.ajax({type:"POST",url:"/account/islogin/",data:"",async:"false",
        success:function(data){
            if(data=="null"){
                signup();
                authenticated =  false;
            }
            authenticated =  true;   
        }
    });
    return authenticated;
};

为什么函数总是返回false,甚至authenticated=true被执行。

4

2 回答 2

3

问题是您运行 if 语句,然后每次都将 authenticated 设置为 true。听起来您正在寻找 if else 语句。

function check_login(){
    var authenticated  = false;
    $.ajax({type:"POST",url:"/account/islogin/",data:"",async:false,
        success:function(data){
            if(data=="null"){
                signup();
                authenticated =  false;
            } else {
                authenticated =  true; 
            }
        }
    });
    return authenticated;
};

甚至更好的是,您可以将已验证的默认设置为 true,然后仅在数据为空时将其设置为 false。

function check_login(){
    var authenticated  = false;
    $.ajax({type:"POST",url:"/account/islogin/",data:"",async:false,
        success:function(data){
            authenticated =  true;
            if(data=="null"){
                signup();
                authenticated =  false;
            }
        }
    });
    return authenticated;
};
于 2013-06-12T13:27:52.873 回答
-2

因为authenticatedAjax 函数内部的变量和内部的变量check_login()在不同的范围内。他们不能互相影响。

于 2013-06-12T13:29:01.177 回答