jquery:为什么我不能在函数中返回boolean

时间:2013-05-27 12:05:33

标签: jquery ajax function boolean return

我有当前代码:

<button onclick="ismeloggedin()">

脚本:

function ismeloggedin(){
    if(checkloggedin()){
        alert('you"re logged in');
    }else{
        alert('you didn"t login!!!!');
    }
}

function checkloggedin(){
    $.post('/test/check/',{'loggedin':0},function(data,status){
        return (data.status == 'error')?false:true; 
    });
}

php不是必需的,但无论如何都要发布

function check(){
    is(isset($_POST['loggedin'])){
        if(isLoggedIn()){
            $json = ['status'=>'success'];
        }else{
            $json = ['status'=>'error'];
        }
        header('Content-Type: application/json; charset=utf-8');
        echo json_encode($json);
    }
}

我得到的问题是checkloggedin()此函数返回undefined

而是返回true / false

2 个答案:

答案 0 :(得分:2)

jQuery&#39; post函数是异步。这意味着您的函数在加载数据之前返回,因此无法将该值恢复为原始函数。

您必须重新考虑代码的结构,记住数据不会立即可用。例如,当页面加载时你可以发送请求,然后当它完成时(即当你的内部函数被调用时),你可以相应地修改页面上的内容。

答案 1 :(得分:0)

function GenerateResult(pResult){
    if(pResult){
        alert('you\'re logged in');
    }else{
        alert('you didn\'t login!!!!');
    }
}

function ismeloggedin(){
    $.post('/test/check/',{'loggedin':0},function(data,status){
        GenerateResult((data.status == 'error')?false:true);
    });
}