Forums Développement Multimédia

Aller au contenu

Exécution de fonctions javascript chargées en Ajax

CODE Ajax JQuery EaseJs

6 réponses à ce sujet

#1 arnaud.santini

    Ceinture Jaune

  • Members
  • PipPip
  • 24 messages

Posté 06 August 2008 - 09:34 AM

Salut à tous. N'ayant pas trouvé de réponse claire à mon problème dans ce forum, je repose les bases !

Actuellement, j'utilise le FrameWork Mootools pour réaliser le chargement de données via Ajax, mais je pense que c'est un problème général, non spécifique Mootools.

Le problème c'est que quand je charge des données HTML contenant du javascript, si j'ai ceci :

<script language="javascript">
	alert("allo !");
</script>

L'alert s'exécute alors que si j'ai ceci dans ma page mère :

function charge(texte){
	alert(texte);
}
et ceci dans la page fille :
&lt;script language="javascript">
	charge("allo !");
</script>

La fonction ne s'exécute pas ...

Comment faire pour appeler une fonction de la page mère depuis une page fille chargée en AJAX ? J'ai besoin de cette fonctionnalité car le javascript chargé dans la page fille est créé dynamiquement suivant les données d'une db.

Des idées ?

#2 Ldo

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 9921 messages

Posté 06 August 2008 - 09:42 AM

regarde dans la doc motool, il doit y avoir ça

avec prototype, scriptaculous c'est un paramètre à rajouter
par exemple :
Code
new Ajax.Updater("right", dynUri, {evalScripts:true});

le paramètre evalScripts permet de dire au framework qu'il faut exécuter le code js contenu dans la page qui viens d'être chargée

il dois certainement y avoir un paramètre ou un truc de prévu pour ça dans motool aussi
mais n'ayant jamais utilisé ce framework, je ne saurait te dire lequel ...



#3 Ldo

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 9921 messages

Posté 06 August 2008 - 09:45 AM

bah en fait c'est le même paramètre smile.gif

http://docs.mootools.net/Request/Request.HTML

Citation
evalScripts - (boolean: defaults to true) If set to true, script tags inside the response will be evaluated.


#4 arnaud.santini

    Ceinture Jaune

  • Members
  • PipPip
  • 24 messages

Posté 06 August 2008 - 09:46 AM

Merci de ta réponse.

En réalité, je n'ai trouvé aucune indication à ce sujet dans la doc Mootools justement. Il me semble qu'il active par défaut l'exécution du code javascript. D'ailleurs, dans le premier cas, le alert(...) fonctionne. C'est donc que le javascript est analysé.

Par contre, il n'arrive pas à utiliser une fonction créée dans la page mère ...

#5 Ldo

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 9921 messages

Posté 06 August 2008 - 09:52 AM

ok effectivement, j'avais mal compris la question

tu aurait en ligne une page de démo ?
il dois sortir une erreur du style charge est undefined je suppose ?

#6 arnaud.santini

    Ceinture Jaune

  • Members
  • PipPip
  • 24 messages

Posté 06 August 2008 - 10:22 AM

Oui effectivement, j'étais passé à côté (je me demande comment d'ailleurs, c'est assez gros ! icon_eek.gif ). Mais comme précisé sur cette même ligne de doc, de toute façon, le paramètre est à true par défaut.

En fait j'ai trouvé quelques débuts de réponse. D'abord, ma fonction change() était incluse dans le window.addEvent('domready',function(){}). En la sortant de là, elle est analysée et fonctionne.

Par contre, le problème que j'ai, c'est que le javascript est analysé avant le renvoie du HTML dans ma page mère. Et comme le javascript traite des balises qui ne sont pas encore en place ..., ça pose problème ! wink.gif

Merci de ton coup de main pour la doc Mootools.

Maintenant il faut que je vois comment forcer l'exécution du javascript chargé après que les éléments aient été intégrés à la page ...

#7 arnaud.santini

    Ceinture Jaune

  • Members
  • PipPip
  • 24 messages

Posté 06 August 2008 - 10:34 AM

C'est bon, j'ai trouvé !

En cherchant dans le core de Mootools, j'ai trouvé qu'il exécutait un update du div cible avant de charger le JS.

En fait, j'utilisais le code donné dans les exemples officiels de Mootools :

var req = new Request.HTML({url:'fichier', 
onSuccess: function(html) {
$('zoneOptions').set('text', '');
$('zoneOptions').adopt(html);
},...

mais il suffisait d'utiliser l'option update :

var req = new Request.HTML({url:'fichier', update:'zoneOptions', ...

Pffffff, ils pouvaient pas donner un exemple logique avant de traiter un cas spécial ... ??!!

Bon, en tout cas merci de ta participation et de ta réactivité !



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP