我正在尝试将标记放入JQuery-ui对话框小部件中。由于一些其他问题,我需要从服务器加载它作为ajax调用。
返回的是:
<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准备对话,如$(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("");
}
});
});
}
它无法正常工作,标签不在模态对话框的标签中。
脚本标记是body标记的最后一个子标记 - 因此是ui-dialog div的兄弟
有什么想法吗?
答案 0 :(得分:1)
问题是,jQuery处理sript标签的方式与其他标签不同。如果它在作为html函数的参数传递的结构中填充它,它将它取出并在其上运行eval然后将它放在文档的末尾。
解决这个问题的方法是将脚本标记放入vira normal JavaSript
结构中var script = document.createElement('script');
script.type = 'text/fbml';
script.text = scripttext;
然后可以像
一样添加$("#ajaxModal").append(script);
我正在使用regexp从ajax响应中提取脚本