2012-03-19 2 views
0

생성 된 Ajax 콘텐츠와 함께 페이스 북 주석 상자를 표시하려고합니다. 나는 모든 코드를 간단한 예제로 줄 였는데 나는 어디 선가 놓친다.AJAX 호출 후 Facebook 메모 상자가 렌더링되었습니다.

내 주요 예제 페이지 http://www.gerdalouw.com/ajax/ajax.html이 자체적으로 잘 작동 아래로 자동으로 http://www.gerdalouw.com/ajax/ax.html < <에 그립니다

드롭을 (드롭 다운에서 테스트 아약스 실행 선택)하지만, FB 주석 상자에 원하지 않는 Ajax 호출을 통해 생성한다.

FB.XFBML.parse();를 사용해 보았습니다. 기능 중 하나이지만 잘못된 위치에 놓고 있거나 다른 것을 놓치고 있습니까? 나는 어딘가에서 아주 명백한 것을 놓치고 있다고 생각하니?

여기 내 문제에 대한 여러 가지 가능한 해결책을 찾아 보았지만 제대로 작동하는 것을 찾을 수 없었습니다. 누구든지 제발 도와 줄 수 있니?

+1

"FB.XFBML.parse();"가 표시되지 않습니다. ajax.html 또는 ax.html에 있습니다. 또한 FB.init도 표시되지 않습니다. 이상적으로 AJAX 컨텐츠를 페이지에 렌더링 한 후 FB.XFBML.parse를 실행하면 완벽하게 정상적으로 작동합니다. 우리는 많은 응용 프로그램에서 그것을 사용했습니다. – Shreeni

+0

감사합니다. Shreeni, 솔직히 말해서 어디에 넣어야할지 모르겠군요. (ax.html 페이지 안에 위치해야한다고 생각했던 곳에서 일하고 싶지 않았기 때문에). 당신이나 다른 사람이이 Ajax 호출 (Trigger page + Called page)을 함께 묶는 방법에 대한 간단한 예제가 없을 것입니다. – Herman

답변

3

이 블로그 기사가 도움이된다는 사실을 발견했습니다. http://dominicminicoopers.blogspot.com/2012/03/assigning-url-for-facebook-comments.html

약간의 코드가 있습니다. FB 객체가 완전히 초기화되면 callAjax가 발생해야합니다. FB의로드와 초기화를 확실히하기 위해 window.fbAsyncInit 함수 내부에 배치했습니다.

<div id="fb-root"></div> 

<div id="myCommentsDiv"></div> 

<script> 
    (function(d, s, id) { 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) return; 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=YOUR_APP_ID"; 
    fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk')); 
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId : 'YOUR_APP_ID', // App ID 
     channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html' // Channel File 
    }); 

    callAjax(); 
    }; 

    function callAjax(yourData) { 
     $.ajax({ 
     url: "YOUR_AJAX_URL", 
     data: yourData, 
     success: function(){ 
      var mydiv = $('#myCommentsDiv'); 
      mydiv.html('<div class="fb-comments" href="' + document.location.href + '" posts="2" width="470">'); 
      FB.XFBML.parse(mydiv[0]); 
     } 
     }); 

    } 

    }; 
</script> 
+0

감사합니다.이 대답은 저를 도와줍니다! –

0

를 호출 "FB.XFBML.parse()"를 명시 적으로 이것은 당신을 위해 일한다 페이스 북의 코멘트 섹션

//facebook comments 
    var isFacebook = $data.find('.fb-comments'); 
    if(isFacebook != 'undefined') { 
     var scriptText = 'FB.XFBML.parse();'; 
     var scriptNode = document.createElement('script'); 
     scriptNode.appendChild(document.createTextNode(scriptText)); 
     contentNode.appendChild(scriptNode);     
    } 
5

를 HTML을 다시 구문 분석하고 렌더링 할 AJAX 성공 기능, 내부 :

$ ('본문') ajaxComplete (function() {FB.XFBML.parse (document.body)});

모든 Ajax 호출에 대해 FB.XFBML.parse가 호출됩니다. 따라서 어디에서나 전화를 다시 걸 필요가 없습니다.