2009-09-22 32 views
6

Sau khi tải trang, tôi đang thực hiện một yêu cầu AJAX để kéo xuống một đoạn HTML chứa các thẻ đại diện cho ảnh hồ sơ người dùng Facebook. Tôi nối kết quả vào một điểm trong DOM nhưng biểu tượng không tải, thay vào đó tất cả những gì tôi thấy là hình bóng mặc định.Tải Facebook fb: profile-pic qua AJAX trong trang Facebook Connect

Dưới đây là chỉ đơn giản là làm thế nào tôi đang tải các đoạn HTML với jQuery

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

HTML mà tôi phụ thêm là danh sách các diffs như thế này:

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

Bất kỳ ý tưởng? Tôi giả sử các thẻ fb không được xử lý khi dom được tải. Có cách nào để thực hiện điều đó không? Tôi không thấy bất kỳ ngoại lệ hoặc lỗi nào trong bảng điều khiển Firebug của mình.

Cảm ơn

Trả lời

8

nỗ lực đầu tiên

Không chắc nếu điều này giúp ích rất nhiều, nhưng đây là một bài viết về Ajax + FBML: http://wiki.developers.facebook.com/index.php/FBJS#Creating_FBML_Elements

Đặc biệt, có lẽ bạn có thể sử dụng setInnerFBML () phương thức


Theo dõi

Vì vậy, tôi nghĩ rằng hàm init phân tích cú pháp fbml. Vì vậy, câu hỏi rõ ràng là làm thế nào để bạn nhận được thư viện javascript của facebook để phân tích lại fbml (hoặc chỉ phân tích cú pháp fbml mới) nếu bạn chèn fbml sau init.

Dường như chủ đề này có thể giúp: http://forum.developers.facebook.com/viewtopic.php?id=22245

Đây là những gì dường như là mã có liên quan mặc dù có bối cảnh nhiều hơn tại diễn đàn:

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

Tôi nên đề cập rằng tôi đang sử dụng Facebook Connect. Tôi đã được chải trên tất cả mọi thứ liên quan đến setInnerFBML() nhưng nó là một phần của FBJS và tôi không thể xem làm thế nào bạn có thể tận dụng nó khi sử dụng Facebook Connect bên ngoài của FB. – mbrevoort

+0

TUYỆT VỜI! Điều đó hoạt động. Cảm ơn! – mbrevoort

+0

Câu trả lời hay! Đúng thứ tôi cần! Upvote cho bạn! –

6

FB.XFBML.Host.parseDomTree làm không làm việc cho tôi. có thể nó đã thay đổi trong api mới. những gì đã làm công việc là:

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

hoặc

FB.XFBML.parse() 

nếu bạn muốn toàn bộ trang phân tích cú pháp.

+0

điều này tôi phải sử dụng cũng như – Pbearne

+0

@ user239427 bạn đã đặt những dòng mã này ở đâu? bên trong cuộc gọi tập lệnh trên trang đang tải bên trong div được tải ajax .. hoặc trên trang tập lệnh gốc? –

0

Tôi đang sử dụng Microsoft Web Helpers với MVC3 (trong đó bao gồm facebook người giúp đỡ)

cú pháp dao cạo

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

Vì vậy, tôi cần phải gọi

window.fbAsyncInit(); 

Để phân tích lại nội dung trên facebook.

Các vấn đề liên quan