ajax
  • facebook
  • dom
  • xfbml
  • 2010-11-04 93 views 2 likes 
    2

    我想用javascript(jQuery)通過ajax向服務器請求XFBML代碼。 然後,XFBML代碼將附加到DOM。如何通過ajax放置XFBML代碼?

    這是PHP代碼:

    echo " 
    <fb:serverFbml> 
        <script type=text/fbml'> 
        <fb:fbml> 
         <fb:request-form 
          action='http://myserver.com/invited.php' 
          method='post' 
          type='myserver' 
          invite='true' 
          content='yo you...'> 
          <fb:request-form-submit uid=12312312label='Send to %n ' import_external_friends=false /> 
         </fb:request-form> 
         </fb:fbml> 
        </script> 
    </fb:serverFbml> 
    
    "; 
    

    這裏是JavaScript:

    function clickME() { 
    
        $.ajax(
          { 
           url:'http://myserver.com/fbml_ajax.php', 
           success:attachData, 
    
           type:'GET', 
           dataType:'html', 
           global:false 
          } 
         ); 
    
    } 
    
    function attachData(data) { 
        var myData = data; 
        $('#attachnow').html(data); 
    } 
    

    我不能使它工作..它沒有連接。
    如果我只是將XFBML靜態放在HTML頁面上,它就可以工作。但如果我附加到DOM它不會。

    是因爲標籤?還是因爲從服務器返回時包含\ r \ n的數據?

    回答

    6

    您需要在任何新內容上使用FB.XFBML.parse。 FBML僅在默認情況下在頁面加載時進行解析。根據我的鏈接頁面的第二個例子,確切的代碼將

    FB.XFBML.parse(document.getElementById('attachnow')); 
    

    添加爲您attachData函數的最後一行。

    +0

    因此,我應該對由ajax傳回的數據立即運行FB.xFMBL.parse(data),還是附加到dom,然後運行FB.XBML.parse('attachnow')? – murvinlai 2010-11-04 10:23:41

    +0

    我編輯了我的答案來回答這個問題;希望它有助於:) – Domenic 2010-11-04 12:26:28

    +1

    @murvinlai - 附加到DOM後。基本原理:FB代碼處理DOM中的元素(例如「document.getElementById」) - 因此您需要執行處理並將該項目附加到DOM,然後調用FB來解析添加的內容。 – jeffreypriebe 2011-04-20 15:26:38

    相關問題