2010-07-22 8 views
7

Aby dać ci prosty przypadek użycia - na mojej stronie wyświetlają się komentarze opublikowane przez użytkowników Facebooka. Dla każdego komentarza wyświetlam zdjęcie użytkownika facebooka za pomocą znacznika fb: profile-pic i przycisku podobnego do fb.Znaczniki Facebooka nie renderują się, gdy są generowane dynamicznie za pomocą Jquery

Ta strona jest wyświetlana poprawnie, a wszystko jest poprawnie wyświetlane. Teraz, gdy użytkownicy chcą czytać starsze komentarze, klikają na link "Więcej"

Używając Jquery, przeciągam starsze komentarze i buduję javascript zawartość dodając fb: profile-pic i fb: jak tagi

Ale te tagi nie wyświetlają się. Czy musimy przeładować to lub coś takiego. Dzięki za pomoc

+0

należy go przeładować ... Proponuję za pośrednictwem AJAX ... – Reigel

+0

jak to zrobić - jak teraz buduję mój cały ciąg powiedzieć comment = „

I love icecream
” Potem zrobiłbym $ ("# myswipes"). Html (komentarz); Jak mogę przeładować. – Gublooo

Odpowiedz

28

Najpierw upewnij się, że FBML jest włożona do DOM z inspektorem. Jeśli tak, wszystko, co musisz zrobić, to powiedzieć Facebookowi, aby konwertował tagi FBML na tagi HTML, aby Twoja przeglądarka mogła je renderować. Za pomocą Graph API wywołujesz FB.XHTML.parse http://developers.facebook.com/docs/reference/javascript/FB.XFBML.parse przy użyciu pakietu JavaScript SDK. Oto przykład z mojego kodu:

$('#list').append('<fb:name uid="4"></fb:name>'); 
FB.XFBML.parse(document.getElementById('list')); 
+1

Dziękuję, dziękuję, dziękuję - kocham cię - oszczędziłeś tyle mojego czasu .......... to dokładnie to, czego potrzebowałem - dzięki znowu – Gublooo

+0

dziękuję, bardzo mi pomogło – srcastro

+0

A ja, to urocza drobna poprawka! Używałem jak przycisku w załadowanej w ajax zakładce jQuery i nie mogłem go wyrenderować, dopóki nie znalazłem tego. Wielkie upomnienie ode mnie! – Rich

-1

jak to zrobić - jak teraz buduję mój cały ciąg powiedzieć comment="<div>I love icecream<br/><fb:profile-pic uid='xxx'></fb:profile-pic></div>" Wtedy robię $("#myswipes").html(comment); Więc jak bym przeładować.

można użyć $.ajax(), powiedzmy

$('a.moreComment').click(function(){ 
    $.ajax({ 
     url: 'some/url.php', 
     success : function(comment){ 
      $("#myswipes").html(comment); 
     } 
    }); 
}) 

some/url.php powinien znajdować się w serwerze, który może poprawnie wykonywali i powrócić do tej linii <div>I love icecream<br/><fb:profile-picuid='xxx'></fb:profile-pic></div>

+0

Jaka jest różnica między renderowaniem tej samej linii po stronie serwera a klientem. Po prostu wypróbowałem twoje podejście to nie działa – Gublooo

+0

jeśli możesz wyświetlić 'some/url.php' w przeglądarce bez problemu, to powinno zadziałać ... – Reigel

+0

jeśli zwrócę dowolny inny ciąg - który wyświetla się dobrze - ale kiedy wrócę ciąg tagu fb, np. Gublooo

Powiązane problemy