Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从javascript回调函数中检索值 var display\u welcome=function(){ var fb#u login_button=jQuery('fb#u login_button'); var fb_welcome=jQuery('fb_welcome'); 变量名=“”; FB.api('/me',函数(响应){ 控制台日志(响应); name=response.first\u name; }); fb_login_button.css('display','none'); fb_welcome.html('welcome,'+name+''); fb_welcome.css('display','block'); };_Javascript_Jquery_Callback_Scope_Facebook Javascript Sdk - Fatal编程技术网

从javascript回调函数中检索值 var display\u welcome=function(){ var fb#u login_button=jQuery('fb#u login_button'); var fb_welcome=jQuery('fb_welcome'); 变量名=“”; FB.api('/me',函数(响应){ 控制台日志(响应); name=response.first\u name; }); fb_login_button.css('display','none'); fb_welcome.html('welcome,'+name+''); fb_welcome.css('display','block'); };

从javascript回调函数中检索值 var display\u welcome=function(){ var fb#u login_button=jQuery('fb#u login_button'); var fb_welcome=jQuery('fb_welcome'); 变量名=“”; FB.api('/me',函数(响应){ 控制台日志(响应); name=response.first\u name; }); fb_login_button.css('display','none'); fb_welcome.html('welcome,'+name+''); fb_welcome.css('display','block'); };,javascript,jquery,callback,scope,facebook-javascript-sdk,Javascript,Jquery,Callback,Scope,Facebook Javascript Sdk,当用户从网站登录Facebook时调用此函数。目标是用用户的名字向用户显示欢迎消息。问题在于变量“name”是FB.api()回调方法范围内的局部变量。提取此值并在函数“display\u welcome”中使用它的最佳方法是什么?我会: var display_welcome = function(){ var fb_login_button = jQuery('#fb_login_button'); var fb_welcome = jQuery('#fb_welcome')

当用户从网站登录Facebook时调用此函数。目标是用用户的名字向用户显示欢迎消息。问题在于变量“name”是FB.api()回调方法范围内的局部变量。提取此值并在函数“display\u welcome”中使用它的最佳方法是什么?

我会:

var display_welcome = function(){
    var fb_login_button = jQuery('#fb_login_button');
    var fb_welcome = jQuery('#fb_welcome');
    var name = '';

    FB.api('/me',function(response){
        console.log(response);
        name = response.first_name;
    });

    fb_login_button.css('display', 'none');
    fb_welcome.html('<span>Welcome, ' + name + '</span>');
    fb_welcome.css('display', 'block');
};
jQuery(文档).ready(函数($){
FB.api('/me',函数(响应){
var fb_login_button=$(“#fb_login_button”),
欢迎光临=$(“#欢迎光临”);
fb_login_button.css('display','none');
fb_welcome.html('welcome',+response.first_name+'')
.css(“显示”、“块”);
});
});
我会:

var display_welcome = function(){
    var fb_login_button = jQuery('#fb_login_button');
    var fb_welcome = jQuery('#fb_welcome');
    var name = '';

    FB.api('/me',function(response){
        console.log(response);
        name = response.first_name;
    });

    fb_login_button.css('display', 'none');
    fb_welcome.html('<span>Welcome, ' + name + '</span>');
    fb_welcome.css('display', 'block');
};
jQuery(文档).ready(函数($){
FB.api('/me',函数(响应){
var fb_login_button=$(“#fb_login_button”),
欢迎光临=$(“#欢迎光临”);
fb_login_button.css('display','none');
fb_welcome.html('welcome',+response.first_name+'')
.css(“显示”、“块”);
});
});

将其余代码放入回调函数。

将其余代码放入回调函数。

将这些代码行移到API的回调函数中如何?像这样:

var display_welcome=函数(){ var fb#u login_button=jQuery('fb#u login_button'); var fb_welcome=jQuery('fb_welcome'); 变量名=“”

FB.api('/me',函数(响应){
控制台日志(响应);
name=response.first\u name;
fb_登录_按钮。隐藏();
fb_welcome.html('welcome,'+name+'');
欢迎光临;
});

})

将这些代码行移动到API的回调中怎么样?像这样:

var display_welcome=函数(){ var fb#u login_button=jQuery('fb#u login_button'); var fb_welcome=jQuery('fb_welcome'); 变量名=“”

FB.api('/me',函数(响应){
控制台日志(响应);
name=response.first\u name;
fb_登录_按钮。隐藏();
fb_welcome.html('welcome,'+name+'');
欢迎光临;
});

})

我认为最好通过订阅FB.init()之后的事件来获取用户信息。大概是这样的:

FB.api('/me',function(response){
    console.log(response);
    name = response.first_name;

    fb_login_button.hide();
    fb_welcome.html('<span>Welcome, ' + name + '</span>');
    fb_welcome.show();
});
window.fbAsyninit=function(){
FB.init({
appId:'您的应用程序ID',
状态:true,//检查登录状态
cookie:true,//启用cookie以允许服务器访问会话
xfbml:true//解析xfbml
});
FB.Event.subscribe('auth.login',函数(响应){
//做些有反应的事情
显示_欢迎();
});
FB.getLoginStatus(函数(响应){
if(response.session){
//已登录并已连接的用户,您认识的人
显示_欢迎();
}
});
};
var display_welcome=函数(){
FB.api('/me',函数(响应){
var fb#u login_button=jQuery('fb#u login_button');
var fb_welcome=jQuery('fb_welcome');
var name=response.first\u name;
fb_login_button.css('display','none');
fb_welcome.html('welcome,'+name+'');
fb_welcome.css('display','block');
});
};

我认为最好通过订阅FB.init()之后的事件来获取用户信息。大概是这样的:

FB.api('/me',function(response){
    console.log(response);
    name = response.first_name;

    fb_login_button.hide();
    fb_welcome.html('<span>Welcome, ' + name + '</span>');
    fb_welcome.show();
});
window.fbAsyninit=function(){
FB.init({
appId:'您的应用程序ID',
状态:true,//检查登录状态
cookie:true,//启用cookie以允许服务器访问会话
xfbml:true//解析xfbml
});
FB.Event.subscribe('auth.login',函数(响应){
//做些有反应的事情
显示_欢迎();
});
FB.getLoginStatus(函数(响应){
if(response.session){
//已登录并已连接的用户,您认识的人
显示_欢迎();
}
});
};
var display_welcome=函数(){
FB.api('/me',函数(响应){
var fb#u login_button=jQuery('fb#u login_button');
var fb_welcome=jQuery('fb_welcome');
var name=response.first\u name;
fb_login_button.css('display','none');
fb_welcome.html('welcome,'+name+'');
fb_welcome.css('display','block');
});
};

问题在于,当您调用
FB.api(…)
函数时,它是异步的,也就是说,您的代码不会停止并等待结果,也不会等待调用您提供的回调。相反,显示欢迎消息的下三行代码将在回调发生之前执行,这意味着
name
变量在您尝试使用它时仍然为空。解决方案与其他答案相同,即,将欢迎消息代码移动到回调函数中,以便在设置之前不要尝试使用
name

  window.fbAsyncInit = function() {
    FB.init({
      appId  : 'YOUR APP ID',
      status : true, // check login status
      cookie : true, // enable cookies to allow the server to access the session
      xfbml  : true  // parse XFBML
    });

     FB.Event.subscribe('auth.login', function(response) {
         // do something with response
         display_welcome();
     });

     FB.getLoginStatus(function(response) {
         if (response.session) {
             // logged in and connected user, someone you know
             display_welcome();
         }
     });
  };


var display_welcome = function(){

    FB.api('/me',function(response){
        var fb_login_button = jQuery('#fb_login_button');
        var fb_welcome = jQuery('#fb_welcome');
        var name = response.first_name;

        fb_login_button.css('display', 'none');
        fb_welcome.html('<span>Welcome, ' + name + '</span>');
        fb_welcome.css('display', 'block');
    });

};
var display\u welcome=function(){
var fb#u login_button=jQuery('fb#u login_button');
var fb_welcome=jQuery('fb_welcome');
变量名=“”;
FB.api('/me',函数(响应){
控制台日志(响应);
name=response.first\u name;
fb_login_button.css('display','none');
fb_welcome.html('welcome,'+name+'');
fb_welcome.css('display','block');};
});
}
(顺便说一句,这是我不喜欢单用变量的说法:除非您在页面的其他地方使用它(因为它是
display\u welcome()
函数的本地变量,所以您可能不会这样做),否则您实际上不需要
名称
变量a