<fb:serverfbml>
тег должен присутствовать на странице с самого начала, вы не можете добавить его динамически. Все внутри может быть динамичным.
Так что присвойте <fb:serverfbml>
некоторый идентификатор, а затем загрузите ваш fbml в него, когда это необходимо.
На странице:
<div id='box'>
<fb:serverfbml width='615' id='invite_box'></fb:serverfbml>
</div>
Сценарий:
$('#test_button').click(function(){
$("#invite_box").html(
"<script type='text/fbml'>" +
"<fb:request-form action='http://example.com/'" +
"method='POST'" +
"invite='true'" +
"type='Example'" +
"content=""Echo Content. <fb:req-choice url=""http://example.com/"" label=""Example Label"" />"">" +
"<fb:multi-friend-selector showborder='false'" +
"bypass='cancel'" +
"cols=4" +
"actiontext='Invite Friends To Example'/>" +
"</fb:request-form>" +
"</script>"
);
});
ОБНОВЛЕНИЕ 2
Попробуйте отключить автоматический синтаксический анализ fbml в init fb:
FB.init({xfbml: false});
, а затем вручную анализировать fbml после загрузки:
$('#test_button').click(function(){
$("#invite_box").html(...);
FB.XFBML.parse($("#box")[0]);
});
Если это не сработает, попробуйте удалить обертку <script type='text/fbml'></script>
из вашего fbml (у меня ее нет в моем коде, без нее работает нормально).