2009-09-22 8 views
6

Po załadowaniu strony wykonuję żądanie AJAX, aby pobrać fragment HTML zawierający tagi reprezentujące obraz profilu użytkownika Facebooka. Dołączam wynik do punktu w DOM, ale logo nie ładuje się, zamiast tego widzę tylko domyślną sylwetkę.Ładowanie Facebook fb: profil-pic przez AJAX na Facebooku Connect site

Tutaj po prostu jak ja ładowania kawałek HTML z jQuery

$.ajax({ 
    url: "/facebookprofiles" 
    success: function(result) { 
    $('#profiles').append(result); 
    } 
}); 

HTML że jestem dołączanie jest lista dyferencjału tak:

<div class="status Accepted"> 
    <fb:profile-pic class="image" facebook-logo="true" linked="true" size="square" uid="1796055648"></fb:profile-pic> 
    <p> 
    <strong>Corona Kingsly</strong>My Status Update<br/> 
    <span style="font-size: 0.8em">52 minutes ago</span> 
    </p>   
</div> 

jakieś pomysły? Zakładam, że znaczniki fb nie są przetwarzane po załadowaniu domeny. Czy jest jakiś sposób, aby to się stało? Nie widzę żadnych wyjątków ani błędów w mojej konsoli Firebug.

Dzięki

Odpowiedz

8

Pierwsza próba

Nie wiem, czy to pomoże dużo, ale tutaj jest artykuł o Ajax + FBML: http://wiki.developers.facebook.com/index.php/FBJS#Creating_FBML_Elements

W szczególności może można użyć setInnerFBML () metoda


Kontynuacja

Myślę, że funkcja init analizuje plik fbml. Tak więc oczywiste pytanie brzmi: jak uzyskać bibliotekę JavaScript javascript, aby ponownie przeanalizować plik fbml (lub po prostu przeanalizować nowy plik fbml), jeśli wstawiasz plik fbml po init.

Wygląda to wątek może pomóc: http://forum.developers.facebook.com/viewtopic.php?id=22245

Oto, co wydaje się być odpowiedni kod choć jest bardziej kontekstowe na forum:

if (FB.XFBML.Host.parseDomTree) 
    setTimeout(FB.XFBML.Host.parseDomTree, 0); 
+0

Powinienem wspomnieć, że używam Facebook Connect. Przecząłem wszystko, co związane z setInnerFBML(), ale jest częścią FBJS i nie widzę sposobu, w jaki można go wykorzystać podczas korzystania z Facebook Connect poza FB. – mbrevoort

+0

NIESAMOWITE! To działa. Dzięki! – mbrevoort

+0

Doskonała odpowiedź! Dokładnie to, czego potrzebowałem! Awansuj dla Ciebie! –

6

FB.XFBML.Host.parseDomTree zrobił nie działa dla mnie. może to się zmieniło w nowym interfejsie API. co nie działa to:

FB.XFBML.parse(document.getElementById('foo')) 

lub

FB.XFBML.parse() 

jeśli chcesz całą stronę analizowany.

+0

to, co musiałem użyć również – Pbearne

+0

@ user239427 gdzie umieściłeś te linie kodu? wewnątrz wywołania skryptu na stronie, która ładuje się wewnątrz ładowanego div ajax ... lub na oryginalnej stronie skryptu? –

0

Używam Microsoft Web-pomocników z MVC3 (które obejmują pomocników Facebook)

składnia brzytwa

@Facebook.GetInitializationScripts() 

ouputs

<script type="text/javascript"> 
     window.fbAsyncInit = function() { 
      FB.init({ appId: '115631105198333', status: true, cookie: true, xfbml: true }); 
     }; 
     (function() { 
      var e = document.createElement('script'); e.async = true; 
      e.src = document.location.protocol + 
      '//connect.facebook.net/en_US/all.js'; 
      document.getElementById('fb-root').appendChild(e); 
     }()); 

     function loginRedirect(url) { window.location = url; } 
    </script> 

Więc musiałem zadzwonić

window.fbAsyncInit(); 

Aby ponownie przeanalizować zawartość Facebooka.

Powiązane problemy