2011-03-21 46 views
0

他腳本工作正常同步請求FB jQuery的LOAD(阿賈克斯)後的JavaScript SDK


HTML HERE 


window.fbAsyncInit = function() { 
    FB.init({appId: 'XXXXXXXX', status: true, cookie: true, xfbml: true}); 
     console.log('in'); 
    FB.getLoginStatus(function(response) { 
    console.log(response); 
     if (response.session) { 
      // logged in and connected user, someone you know 
      code here 
      } 
     } else { 
      // no user session available, someone you dont know 
      code here 
     }  
    }); 

}; 

HTML HERE 

我最近想ajaxify網站, 當我提出一個XMLHttpRequest將其追加在頁面上(使用jQuery的負載ajax GET請求的簡寫。)javascript方法FB.getLoginStatus不會被執行。

讓我分享控制檯結果:

 
synchronous: in , response (object) 
asynchronous: in 

誰能幫助?

回答

0

我遇到了同樣的問題,Facebook的方式使庫不能使用FB.init({});所以我們必須找到一種方法來摧毀它並重新創建它!使用內置函數可能會有更簡單的方法,但這是一種絕對有效的方法。我已經這樣做了,去掉了整個FB對象,當我找到最好的解決方案時我會回覆。

UPDATE 確定這裏被發現內置的功能來分析新的元素 ...... SOLUTION:

FB.XFBML.parse(document.getElementById('idOfElementContainingFBML')); 

//你想用最少的代父元素包含xfbml爲最佳性能,在jQuery加載的情況下,它將使用像這樣的元素:

$('#result').load('ajax/test.html', function() { 
    FB.XFBML.parse(document.getElementById('result')); 
}); 
+0

我現在這樣做,正如你所說,我通過摧毀DOM中的FB obj並每次重新創建它。我不能在回調函數中使用FB.XFBML.parse,這是您爲特定於應用程序的原因而建議的方式。 – Nikos 2011-03-23 11:57:25