Problème d'exécution de <SCRIPT></SCRIPT> lors d'appel en mode AJAX

Résolu
lkdsak Messages postés 4 Date d'inscription samedi 29 septembre 2007 Statut Membre Dernière intervention 10 novembre 2008 - 8 nov. 2008 à 16:11
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 - 10 nov. 2008 à 14:48
Bonjour, ça fait deux jours que je cherche et je n'ai toujours pas trouvé. 

Voici mon problème.  J'ai une page
http://www.espaceglobal.com/montest/traiteTest.php
voici le code de traiteTest.php
<HTML><HEAD><HEAD>

<form>
   <script >alert("Calendrier OK")</script>
</form>

</HTML>

Quand j'execute directement http://www.espaceglobal.com/montest/traiteTest.php, mon script <script >alert("Calendrier OK")</script> fonctionne bien

Mon problème se situe lors des appels AJAX.
J'ai une page http://www.espaceglobal.com/montest/test.php qui affiche un bouton pour executer la page traiteTest.php. Mais quand je clic sur mon bouton, rien ne se passe.  Comme si le <script >alert("Calendrier OK")</script> n'était pas pris en compte.
Voici le code de test.php


<HTML><HEAD>
<script type="text/javascript" src="calendarDateInput.js">


/***********************************************
* Jason's Date Input Calendar- By Jason Moon http://calendar.moonscript.com/dateinput.cfm
* Script featured on and available at http://www.dynamicdrive.com
* Keep this notice intact for use.
***********************************************/


</script>
<script language="javascript" type="text/javascript">
function TraiterCalendrier(){
 var ajaxRequest;  // The variable that makes Ajax possible!
 
 evalScripts:true
 try{
  // Opera 8.0+, Firefox, Safari
  ajaxRequest = new XMLHttpRequest();
 } catch (e){
  // Internet Explorer Browsers
  try{
   ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
   try{
    ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
   } catch (e){
    // Something went wrong
    alert("Your browser broke!");
    return false;
   }
  }
 }




 // Create a function that will receive data sent from the server
 ajaxRequest.onreadystatechange = function(){
  if(ajaxRequest.readyState == 4){
   
   var ajaxDisplay = document.getElementById('ajaxZoneCalendrier');
   ajaxDisplay.innerHTML = ajaxRequest.responseText;
  
  }
 }
 
 ajaxRequest.open("POST", "traiteTest.php?nocache=" + Math.random(),  true);


    ajaxRequest.send(null);


}
</script>


<HEAD>

<form>



</form>

</HTML>



 

Si quelqu'un pouvait m'aider à ce sujet, j'en serait vraiment heureux.  Car pour le moment, je suis bloqué. 

9 réponses

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
10 nov. 2008 à 09:30
mise en page déplorable;.. navré.

  1ère approche : ajax retourne une page html avec du javascript

  demo.htm    
<html>

  

      demo.htm

     

      <script>

         var xml = new XMLHttpRequest();

         xml.open("get","demo.php", false);

         xml.send("");

         var d=document.getElementById("txt");

         d.innerHTML=xml.responseText;

         eval(d.getElementsByTagName('script')[0].text);

      </script>  

  

</html>

    demo.php
<html>

  

      <script type ='text/javascript'>

         alert("demo");

      </script>

      <?php echo Date('l j F Y');   ?>

  

</html>

         

2ème approche : ajax retourne uniquement des données

  demo.htm    
<html>

  

      demo.htm

     

      <script>

         function appel()

         {   alert("demo");   }

         var xml = new XMLHttpRequest();

         xml.open("get","demo.php", false);

         xml.send("");

         document.getElementById("txt").innerHTML=xml.responseText;

         appel();

      </script>  

  

</html>

  demo.php   
<?php echo Date('l j F Y');   ?>

exemple stupide, en synchrone.

          Bul [mon Site] [M'écrire]         
3
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
8 nov. 2008 à 16:31
bonjour,
t'as pas du chercher bien longtemps !
problème récurent !
avec ajax, le javascript renvoyé n'est pas interprété,
il faut que tu les fasses "manuellement" !
on en causait il n'y a pas très longtemps ici-même,
quand à l'opportunité de faire de genre de chose, je ne vais
        pas une nouvelle fois tenter de convaincre que ce n'est
        pas une bonne approche, car c'est quasi toujours inutile
        ( à mon avis ) de rapatrier du javascript.
Cordialement          Bul [mon Site] [M'écrire]       
0
lkdsak Messages postés 4 Date d'inscription samedi 29 septembre 2007 Statut Membre Dernière intervention 10 novembre 2008
8 nov. 2008 à 23:02
Je comprend ton point.  Cependant l'application que je suis entrain de faire est plus compliqué que mon exemple.  L'exemple plus haut n'était que pour simplifier mon code et pour permettre à vous tous de m'aider.

À vrai dire, ce que je veux afficher dans <SCRIPT></SCRIPT> c'est du code qui me permet d'afficher un calendrier popup piker.  J'ai récupéré ce code. Cependant pour que le calendrier fonctionne, l'appel de la function ce fait comme ceci


<ol>
<li><script>DateInput('orderdate', true, 'DD-MON-YYYY')</script></li>
</ol>




<script type="text/javascript" src="calendarDateInput.js">


/***********************************************
* Jason's Date Input Calendar- By Jason Moon http://calendar.moonscript.com/dateinput.cfm
* Script featured on and available at http://www.dynamicdrive.com
* Keep this notice intact for use.
***********************************************/


</script>
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
9 nov. 2008 à 09:24
et bien ? met cette fonction DateInput dans ta page appelante
tu n'auras plus le souci.
sinon, tu sembles utiliser un framework ?
il contient tout ce qu'il faut pour faire exécuté du js chargé avec ajax
   ( même si je pense que c'est inutile )
          Bul [mon Site] [M'écrire]         
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
9 nov. 2008 à 09:51
et quelques messages avant le tien
une ch'tiote discussion à ce propos ici

          Bul [mon Site] [M'écrire]         
                Membre du CCC~0
0
lkdsak Messages postés 4 Date d'inscription samedi 29 septembre 2007 Statut Membre Dernière intervention 10 novembre 2008
10 nov. 2008 à 03:49
Bon, j'ai lu l'ensemble des trucs, puis j'ai essayé tout et ça ne fonctionne pas.

Ça m'embête car la fonction
 
function evalScript(string){
    var allScripts = new RegExp('<script[^>]*>([\\S\\s]*?)<\/script>', 'img');
    var oneScript = new RegExp('<script[^>]*>([\\S\\s]*?)<\/script>', 'im');
    var tabScripts = string.match(allScripts) || [];
    for(var i = 0; i < tabScripts.length; i++){
       
  eval(tabScripts[i]);
    }
}

plante toujours sur cette ligne eval(tabScripts[i]);

En tout cas, merci quand même, je vais faire mon application autrement. sans ajax. 
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
10 nov. 2008 à 09:25
1ère approche : ajax retourne une page html avec du javascript |

----

demo.htm |
demo.php |

----

<html>

demo.htm

<script>
var xml = new XMLHttpRequest();
xml.open("get","demo.php", false);
xml.send("");
var d=document.getElementById("txt");
d.innerHTML=xml.responseText;
eval(d.getElementsByTagName('script')[0].text);
</script>

</html>,

<html>

<script type='text/javascript'>
alert("demo");
</script>

<?php echo Date('l j F Y'); ?>

</html>,

----

2ème approche : ajax retourne uniquement des données |

----

<html>

demo.htm

<script>
function appel()
{ alert("demo"); }
var xml = new XMLHttpRequest();
xml.open("get","demo.php", false);
xml.send("");
document.getElementById("txt").innerHTML=xml.responseText;
appel();
</script>

</html>,
<?php echo Date('l j F Y'); ?>





Cordialement


          Bul [mon Site] [M'écrire]         
0
lkdsak Messages postés 4 Date d'inscription samedi 29 septembre 2007 Statut Membre Dernière intervention 10 novembre 2008
10 nov. 2008 à 14:34
Merci, j'ai finalement réussi avec ce que tu viens de me donner.

J'ai réussis d'afficher le bouton pour le calendrier, mais maintenant mon problème c'est qu'il ne fonctionne pas.

Bien merci beaucoup, j'ai compris maintenant comment fonctionne la fonction eval()

Je vais tout de même éviter de l'utiliser.  De plus, je vais concentrer le Ajax sur des traitements particulié et non pas faire tout en Ajax.

Merci encore pour ton aide
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
10 nov. 2008 à 14:48
>>j'ai compris maintenant comment fonctionne la fonction eval()
nickel
s'il y avait plusieurs <script>, il faudrait faire une ch'tiote boucle
et on peut, bien entendu, faire autrement ( et mieux ! )

>>Je
vais tout de même éviter de l'utiliser. 
>>De plus, je vais concentrer le
Ajax sur des traitements particulié et non pas faire tout en Ajax.
sage décision... si je puis me permettre
ajax c'est fabuleux,  encore faut-il l'utiliser pour ce quoi il est fait,
       c'est comme tout.

Cordialement

          Bul [mon Site] [M'écrire]         
0
Rejoignez-nous