$rootScope.islogin = function(){
        var mip = returnCitySN["cip"];
        $http({
            url: 'public/server/checklogin.php',
            method: 'POST',
            data: "mip="+mip,
            headers: {'Accept': '*/*', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}
        }).success(function(reqdata){
                if(reqdata === "true"){
                    console.log("已登录");
                    return true;
                }else{
                    console.log("未登录");
                    return false;
                };
        });
    };
    alert($rootScope.islogin())
在以上代码中,执行alert($rootScope.islogin())后控制台有结果 但弹窗为undefind,这是为什么?为什么return 不回结果

解决方案 »

  1.   

    你要弄明白异步加载的工作顺序。像类似ajax需要这种异步加载数据的程序。
    在ajax请求加载数据的这行代码的后面不要写任何需要用到加载的数据的代码。因为这些代码执行时数据肯定还没有加载的。
    所有需要用到加载的数据的代码都必须放在数据加载完成的回调函数中才能正解获取数据。
    ajax的回调函数默认是异步执行的。异步执行简单的说就是会先执行ajax方法下面的代码,然后过一段时间再执行ajax的回调函数。这类似于 setTimeout()定时器