2010-11-02 6 views
0

J'essaie de placer une balise dans le widget de dialogue JQuery-ui. En raison d'autres problèmes, j'ai besoin de charger cela à partir du serveur comme un appel ajax.Ajouter une balise non-standard à DOM avec jQuery

est Returned:

<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> 

si je mets cela en div préparé pour dialogue comme $ (div) .html (données):

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(""); 
    } 
    }); 
    }); 
} 

il deosn't travail, la balise est pas dans l'étiquette dans la boîte de dialogue modale.

La balise script est faite dernier enfant de la balise body - et ainsi est des frères et sœurs ui-dialogue div

Toutes les idées?

+0

Pourquoi voudriez-vous insérer un FBML non analysé dans un navigateur DOM en direct? –

+0

pour l'analyser :-) (vous pouvez l'analyser à tout moment avec JS SDK) - et je ne peux pas le mettre en charge, analyser et ensuite créer un dialogue, il y a un petit problème si l'URL de iframe représentant la balise serverFBML être trop long (plus de 2000 caractères ou plus), ça ne marche pas. – Hurda

+0

Selon ma plus récente recherche son problème avec l'étiquette de script - ne peut pas le mettre au milieu du dom – Hurda

Répondre

1

Le problème est que jQuery gère les balises sript différemment des autres. Si elle l'accepte dans la structure passée en paramètre de la fonction html, elle l'extrait et lance eval dessus, puis la met à la fin du document.

autour est de prendre la balise de script et le mettre dans la structure Vira JavaSript normale

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

Il peut alors être ajouté comme

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

J'utilise regexp pour extraire le script à partir de la réponse ajax

Questions connexes