Aller au contenu

chargement eval javascript via AJAX


Sujets conseillés

Posté

Bonjour,

Je me suis mis depuis peu à AJAX et là je bloque alor j'éspère que vous allez pouvoir m'aider...

Mon but est de charger le contenu d'une div (par exemple) via AJAX seulement le contenu de cette div peu contenir des balise <script> incluant du code.

J'arrive à charger ma page et la mettre dans la div mais le code javascript dans les balises script ne veut pas s'éxecuter...

Je veux principalement charger des fonctions et des variables, il n'y a aucun document.write() dedans.

J'ai éssayé d'évaluer le code dans les balise script une fois chargé mais les fonctions ne se déclare pas dans le contexte global :

fonction dans la page principal

...
x.onreadystatechange = function() {
... // status et readystate ok
idelement.innerHTML = x.responseText;
var tscr = idelement.getElementsByTagName('script');

for(var i=0;i<tscr.length;i++){
//alert(tscr[i].text);
eval(tscr[i].text);
}
alert(typeof(myfunc)); // affiche 'function' : myfunc est bien déclaré
}
...

page à charger

<p>test</p>
<script type="text/javascript">
function myfunc (){
alert("done");
}
</script>
<p>
<input type="button" value="call myfunc" onclick="myfunc();" />
<input type="button" value="typeof myfunc" onclick="alert(typeof(myfunc));" /></p>

L'alert dans la fonction où je fais le eval m'indique bien que ma fonction est déclaré mais l'alert dans le boutton m'affiche undefined et le boutton "call myfunc" ne marche pas.

Le problème je pense vient du fait que la fonction est définie uniquement dans l'object XHR (ici x) et non dans le contexte global.

J'ai bien éssayer de faire des with(document) eval(tscr.text) mais rien à faire...

alors là je plante...

Merci à quiquonque aurait une idée :flower:

  • 3 semaines plus tard...

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...