2010-12-14 112 views
0

J'ai essayé de faire fonctionner cela depuis des lustres, j'ai essayé beaucoup de questions/réponses mais je ne suis pas allé très loin.Courir Javascript depuis le fichier AJAX

Je pense que j'avais initialement 2 problèmes, dont j'espère avoir résolu.

J'ai utilisé JotForm (le créateur de formulaire facile qui utilise le prototype). Ce que j'ai est un menu de style facebook (AjaxFlagMenu) qui crée un menu de style ajax verticle qui extrait des snippets html de fichiers externes (qui dans mon cas ont tous un formulaire Jotform).

Au moment en haut de la page « principale » qui contient le menu, j'ai:

<script src="http://cdn.jquerytools.org/1.2.5/jquery.tools.min.js"></script> 
<script type="text/javascript" src="/js/jquery.corner.js"></script> 
<script type="text/javascript" src="/js/jquery.flagmenu.js"></script> 
<script type="text/javascript"> 
jQuery.noConflict(); 
jQuery(document).ready(function($){ 
    var Menu = $("#_Menu").AjaxFlagMenu({ 
    Caption:'Manage Profile', 
    CaptionClass:'CaptionClass', 
    onOutClass:'onOutClass', 
    onOverClass:'onOverClass', 
    onClickClass:'onClickClass', 
    hscOutClass:'hscOutClass', 
    hscClickClass:'hscClickClass', 
    Loading_gif:'/images/loading.gif', 
    ajaxContent:'ajaxContent' 
    }); 
    //Basic 
    Menu.add({ 
     Title:'Basic Info', 
     onOutIcon:'/images/icon-vcard-c.png', 
     onClickIcon:'/images/icon-vcard-d.png', 
     HtmlSatusContent:'', 
     url:'/instructor/pages/mp-basic.php', 
     data:'' 
    }); 
    //Profile Picture 
    Menu.add({ 
     Title:'Profile Picture', 
     onOutIcon:'/images/icon-camera-c.png', 
     onClickIcon:'/images/icon-camera-d.png', 
     HtmlSatusContent:'', 
     url:'/instructor/pages/mp-photo.php', 
     data:'' 
    }); 
    //Pricing and Offers 
    Menu.add({ 
     Title:'Pricing and Offers', 
     onOutIcon:'/images/icon-pound-c.png', 
     onClickIcon:'/images/icon-pound-d.png', 
     HtmlSatusContent:'', 
     url:'/instructor/pages/mp-pricing.php', 
     data:'' 
    }); 
    //Services 
    Menu.add({ 
     Title:'Services', 
     onOutIcon:'/images/icon-services-c.png', 
     onClickIcon:'/images/icon-services-d.png', 
     HtmlSatusContent:'', 
     url:'/instructor/pages/mp-services.php', 
     data:'' 
    }); 
    //Bio and Additional 
    Menu.add({ 
     Title:'Bio and Additional', 
     onOutIcon:'/images/icon-bio-c.png', 
     onClickIcon:'/images/icon-bio-d.png', 
     HtmlSatusContent:'', 
     url:'/instructor/pages/mp-bio.php', 
     data:'' 
    }); 
    $("#_td").corner("4px"); 
}); 
</script> 
<script src="/js/jotform/prototype.js?v=3.1.92" type="text/javascript"></script> 
<script src="/js/jotform/protoplus.js?v=3.1.92" type="text/javascript"></script> 
<script src="/js/jotform/protoplus-ui.js?v=3.1.92" type="text/javascript"></script> 
<script src="/js/jotform/jotform.js?v=3.1.92" type="text/javascript"></script> 
<script src="/js/jotform/calendarview.js?v=3.1.92" type="text/javascript"></script> 

ce que je dois alors faire, est lorsque l'élément de menu est cliqué et charge le code HTML l'autre page, je dois exécuter JotForm.init(); pour activer les fonctions de validation JotForm. Cependant, je ne semble même pas pouvoir alert("Hello World"); pour travailler sur la page qui est appelée.

Toute aide serait géniale! Je vous remercie!

Répondre

1

Dans le AjaxFlagMenu.js, à la ligne du ajax est exécuté:

//Ajax 
var _XMLHTTPRequest = $.ajax({type: "GET",url:_url,data:_data }); 

Essayez d'ajouter dataType: "html" comme ceci:

//Ajax 
var _XMLHTTPRequest = $.ajax({type: "GET",url:_url,data:_data,dataType: "html" }); 

Cette wil évaluer le javascript vous chargez via AJAX.

Vous trouverez plus d'informations ici: http://api.jquery.com/jQuery.ajax/#options


EDIT PLUS TARD

Le problème est que le AjaxFlagMenu n'évalue pas le javascript de la réponse ajax!

+0

Merci pour cela! Je n'ai rien changé mais j'ai l'impression que c'est un pas dans la bonne direction. Le script sur le fichier html externe doit-il être dans $ (document) .ready (function()) ou devrait-il être dans les balises ? – lethalMango

+0

Essayez d'exécuter quelque chose de simple dans le html chargé .. comme l'alerte et de voir si cela évalue que .. quel est exactement l'extrait html qui est chargé sur ajax ressembler? Je suis surtout intéressé par le javascript ... – Catalin

+0

En ce moment, j'ai mais il ne vient pas pour le moment.J'ai juste besoin d'appeler' JotForm.init(); '.Mais cela signifie-t-il que j'ai également besoin d'inclure les fichiers JotForm js dans le fichier externe lui-même ou puis-je les inclure dans la page principale du menu dans laquelle le html est chargé? – lethalMango

0

Utilisez plutôt le code Iframe JotForm. Voici comment vous pouvez l'obtenir. Ouvrez votre formulaire sur le formulaire JotForm Constructeur:

  1. Ouvrir "Setup & Partager" onglet sur la barre d'outils,
  2. Cliquez sur "Partager le formulaire"
  3. Cliquez sur "Options avancées"
  4. Cliquez sur « iFrame Code "et copiez le code du formulaire sur votre site.
+0

Faire cela cependant, autant que je peux voir, ne me donne pas d'options sur l'endroit où le formulaire messages. Il repose également sur les serveurs JotForm pour être en ligne. Si elles tombent, une grande partie de notre site va aussi. – lethalMango