2010-11-02 78 views
0

我试图将标记放入JQuery-ui对话框小部件中。由于一些其他问题,我需要从服务器加载这个Ajax调用。使用jQuery将非标准标记添加到DOM

返回的是:

<div id="ajax-body"> 
    give gift 
<fb:serverFbml width="650px"> 

    <script type="text/fbml"> 
    <center> 
     <fb:request-form action="${shareGiftUrl}" type="Podíl na Zlaté soše" method="POST" 
     content="Daroval jsem ti cuhlu" invite="false"> 
      <fb:multi-friend-selector cols="4" rows="3" 
      showborder="false" max="1" 
      actiontext="Vyber přítele, kterému chceš darovat podíl a klikni na    'Posílat mi žádosti typu Podíl na Zlaté soše'" 
      email_invite="false" bypass="cancel" import_external_friends="false" 
      exclude_ids="${excludeIds}" /> 
    </fb:request-form> 
    </center> 
    </script> 
    </fb:serverFbml> 
    </div> 

,如果我把这个变成DIV准备像$(格)。html的(数据)对话框:

function loadAjax(url, title) { 
$.get(url, 
    function(data) { 
    $("#ajaxModal").html(data); 
    $("#ajaxModal").show(); 
    $("#ajaxModal").dialog({ 
    modal : true, 
    title : title, 
    width : 680, 
    height : 500, 
    close : function(event, ui) { 
     $("#ajaxModal").dialog("destroy"); 
     $("#ajaxModal").html(""); 
    } 
    }); 
    }); 
} 

它deosn't工作,该标签是不在模态对话框的标签中。

脚本标签是由body标签的最后一个子 - 所以是同级UI的对话框的div

任何想法?

+0

为什么要将未解析的FBML插入到实时浏览器DOM中? – 2010-11-02 21:01:14

+0

来解析它:-)(你可以随时用JS SDK解析它) - 我不能在加载时将它解析出来,然后创建对话框,如果代表serverFBML标签的iframe的URL会出现一些小问题要长(长2000字左右),这是行不通的。 – Hurda 2010-11-02 21:42:41

+0

根据我最新的研究,脚本标记问题 - 不能放在dom中间 – Hurda 2010-11-02 21:43:26

回答

1

问题是,jQuery处理sript标签不同于其他。如果它在作为html函数参数传递的结构中找到它,则将其取出并对其运行eval,然后将其放在文档的末尾。解决此

方式是采取script标签,并把它的结构维拉正常JavaSript

var script = document.createElement('script'); 
script.type = 'text/fbml'; 
script.text = scripttext; 

然后它可以被添加像

$("#ajaxModal").append(script); 

我使用正则表达式提取脚本from ajax response