2009-09-22 12 views
6

Dopo il caricamento di una pagina, sto facendo una richiesta AJAX per estrarre un blocco HTML contenente tag che rappresentano un'immagine del profilo utente di Facebook. Aggiungo il risultato ad un punto nel DOM ma i loghi non si caricano, invece tutto quello che vedo è la silhouette di default.Caricamento Facebook fb: profilo-pic tramite AJAX in Facebook Sito Connect

Ecco semplicemente come sto caricando il pezzo HTML con jQuery

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

Il codice HTML che sto aggiungendo una lista di diff come questo:

<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> 

Tutte le idee? Presumo che i tag fb non vengano elaborati una volta che dom è stato caricato. C'è un modo per farlo accadere? Non vedo eccezioni o errori nella mia console Firebug.

Grazie

risposta

8

Primo tentativo

Non sono sicuro se questo aiuta molto, ma ecco un articolo su Ajax + FBML: http://wiki.developers.facebook.com/index.php/FBJS#Creating_FBML_Elements

In particolare, forse è possibile utilizzare il setInnerFBML () metodo


Follow-up

Quindi penso che la funzione init analizzi l'fbml. Quindi la domanda ovvia è come si ottiene la libreria javascript di Facebook per ri-analizzare l'fbml (o solo analizzare il nuovo fbml) se si inserisce fbml dopo init.

Sembra che questa discussione può aiutare: http://forum.developers.facebook.com/viewtopic.php?id=22245

Ecco quello che sembra essere il codice in questione, anche se non v'è più contesto al forum:

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

Avrei dovuto dire che sto usando Facebook Connect. Sto analizzando tutto ciò che riguarda setInnerFBML() ma fa parte di FBJS e non riesco a vedere come puoi sfruttarlo quando usi Facebook Connect al di fuori di FB. – mbrevoort

+0

FANTASTICO! Che funzioni. Grazie! – mbrevoort

+0

Ottima risposta! Proprio quello di cui avevo bisogno! Votata per te! –

6

FB.XFBML.Host.parseDomTree fatto non funziona per me forse è cambiato nella nuova API. ciò che ha funzionato è stata:

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

o

FB.XFBML.parse() 

se si desidera che l'intera pagina analizzata.

+0

questo che ho dovuto usare anche – Pbearne

+0

@ user239427 dove hai messo queste righe di codice ?? all'interno di una chiamata di script sulla pagina che viene caricata all'interno di un div caricato ajax o sulla pagina di script originale? –

0

Sto utilizzando il Microsoft-web-Helpers con MVC3 (che includono aiutanti Facebook)

la sintassi rasoio

@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> 

Quindi avevo bisogno di chiamare

window.fbAsyncInit(); 

Per ri-analizzare il contenuto di Facebook.

Problemi correlati