Javascript功能并显示全局变量

时间:2015-04-30 10:29:09

标签: javascript jquery facebook-javascript-sdk

我尝试这样做:

<script>
    FB.getLoginStatus(function(response) {  
        if (response.status==='connected') {
            var fb_status="on";
        } else {
            var fb_status="off";    
        }
    });

    alert("ok"+fb_status);

</script>

如果我将警报置于功能内,如果我将此警报放在外面,则该警报可以正常工作

我认为这或多或少与php中的全局变量相同但在Javascript中没有多少经验

我只需要在示例中输入相同的函数来检测var中的结果但​​是在我作为示例的情况下,在函数外部,我尝试了很多东西但没有得到结果

关心并感谢社区的帮助

2 个答案:

答案 0 :(得分:0)

FB.getLoginStatus是异步函数,所以当你尝试在fb_status之外获取undefined时,FB.getLoginStatus因为{{1}}没有返回任何结果

答案 1 :(得分:0)

由于FB.getLoginStatus调用是异步的,结果只会在以后发生,并且只与事件处理程序中的相关

e.g。

<script>
    FB.getLoginStatus(function(response) 
    {   
        // This line gets called many millisconds later
        console.log("When I have a status");
        if (response.status==='connected') 
        {
           var fb_status="on";
        }
        else
        {
            var fb_status="off";    
         }
         alert("ok"+fb_status);
    });
    // This line executes long before the callback returns
    console.log("After call");
</script>

查看控制台以查看事件顺序:

  • "After call"
  • "When I have a status"

您在评论中提到要在其他地方使用该值。问题在于时间,因为您想要的结果只会在以后发生。