[AJAX] Exécuter le javascript récupéré
Bonjour,
L'ajax me récupère bien mon résultat html et j'arrive à l'afficher sans problèmes.
Toutefois, dans le résultat récupéré j'ai généré dynamiquement un javascript ayant pour mission de me compléter des balises <label> avec une valeur.
A l'exécution dans Firefox 8, FireBug me remonte que mon premier label is null
document.getElementById("1XO_981_FT_10/10/2011") is null....pourtant il existe dans la réponse reçue par l'ajax.
si j'exécute le code html dans une page de test, tout fonctionne bien.
Mon js :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| function fonction_ajax(var1,var2,var3)
{
var OAjax;
if (window.XMLHttpRequest) OAjax = new XMLHttpRequest();
else if (window.ActiveXObject) OAjax = new ActiveXObject('Microsoft.XMLHTTP');
OAjax.open('POST',"traitement.php",true);
OAjax.onreadystatechange = function()
{
if (OAjax.readyState == 4 && (OAjax.status==200 || xhr.status == 0))
{
parent.frames['nom_frame'].document.getElementById('id_animation_attente').style.display='none';
if (document.getElementById)
{
if (OAjax.responseText =='true') { /* OK */
parent.frames['nom_frame'].document.getElementById('id_du_div').innerHTML= OAjax.responseText;
// EVALUATION DU JAVASCRIPT CONTENU DANS LA REPONSE
var e = parent.frames['nom_frame'].document.getElementById('id_du_div');
/*On évalue le javascript contenu dans les dom*/
var scripts = e.getElementsByTagName('script');
for(var i=0; i < scripts.length;i++)
{
/*Sous IE il faut faire un execScript pour que les fonctions soient définie en globale*/
if (window.execScript)
{
/*On replace les éventuels com' html car IE n'aime pas ça*/
window.execScript(scripts[i].text.replace('<!--',''));
}
/*Sous les autres navigateurs on fait un window.eval*/
else
{
window.eval(scripts[i].text);
}
}
}else{ /* PAS OK */
parent.frames['nom_frame'].document.getElementById('id_du_div').innerHTML='<div align="center">'+OAjax.responseText+'</div>';
}
}
}else{
parent.frames['nom_frame'].document.getElementById('id_animation_attente').style.display='block';
}
}
OAjax.setRequestHeader('Content-type','application/x-www-form-urlencoded');
OAjax.send('var1='+encodeURIComponent(var1)+'&var2='+encodeURIComponent(var2)+'&var3='+encodeURIComponent(var3));
} |
merci d'avance pour votre aide