IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

[AJAX] Exécuter le javascript récupéré


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2003
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 36
    Par défaut [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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre averti
    Inscrit en
    Mars 2003
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 36
    Par défaut
    Je générai du javascript incomplet puisque je ne précisais pas l'iframe de destination...le truc bête...il fallait remplacer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('id_du_div').innerHTML="test";
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parent.frames['nom_du_div'].document.getElementById('id_du_div').innerHTML="test";

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 24
    Dernier message: 01/12/2009, 14h58
  2. [Prototype] [AJAX] Exécuter une fonction javascript via une requête AJAX et innerHTML
    Par Invité dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 01/05/2009, 04h36
  3. Réponses: 2
    Dernier message: 28/04/2009, 13h50
  4. [AJAX] Exécution Javascript dans XSL (FireFox)
    Par mchaz84 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/03/2007, 08h48
  5. Réponses: 8
    Dernier message: 10/11/2005, 15h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo