2012-02-27 60 views
0

当jquery ajax()调用返回成功时,我需要帮助调用FB.api函数。显示Facebook名称的提醒只能在Chrome中使用。与Firefox和IE8无关。警报(数据)是好的,窗口重新加载也是。但FB.api没有。非常感谢您的帮助:FB.api和jquery ajax响应

function fb_login() { 
    FB.login(function(response) { 
     //alert('login'); 
     if (response.authResponse) { 


$.ajax({ 
    url: 'fb_login.asp', 
    data: '', 
    type: 'POST', 
    dataType: 'text', 
    timeout: 10000, 
    error: function(){ 
     alert('Error login Facebook'); 
    }, 
    success: function(data){ 
     alert(data); 
     // do something with xml 

     FB.api('/me', function(resp) { 
      alert(resp.name); 
     });   

     window.location.reload(); 
     //alert('ok'); 
    } 
}); 



     } 


    }, {scope:'email,publish_stream'}); 

} 
+0

*“此代码仅适用于Chrome浏览器,与Firefox和IE8无关。”* Huh?你的意思是它不适用于Firefox和IE8?如果是这样,**如何**不起作用?你看到了什么结果?你期望*看到什么结果?当你使用适当的调试器(Firefox和IE8都有)时,你会发现什么?设置断点,检查变量等? – 2012-02-27 10:28:45

+0

Hi T.J.我希望看到警报:alert(resp.name);在Chrome中,显示了我的fb名称的警报。在Firefox和IE中不显示警报。昨天我试图用Firebug进行检查,但我是新来的调试HTML页面,现在我迷路了。警报(数据)正在工作,窗口重新加载正在工作。只有FB.api不能正常工作 – 2012-02-27 10:50:09

+0

'@ bepi':最好使用“编辑”链接将其添加到问题中。 – 2012-02-27 10:53:45

回答

1

到FB.api的调用是异步的页面重新加载执行回调函数之前。试试这个:

FB.api('/me', function(resp) { 
    alert(resp.name); 
    window.location.reload(); 
    alert('ok'); 
}); 
+0

绝对好。非常感谢Plamena! – 2012-02-27 16:11:33