Appeler du javascript dans une page ajax

Signaler
Messages postés
8
Date d'inscription
jeudi 31 janvier 2008
Statut
Membre
Dernière intervention
7 janvier 2009
-
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
-
Salut,

J'ai une page appelée avec AJAX et quand je note un simple test :
<script type="text/javascript">
document.write("test");
</script>
Ca ne fonctionne pas.

J'ai essayé avec eval() comme ceci :
<script type="text/javascript">
var test = "test";
eval(test);
document.write(test);
</script>
et comme cela :
<script type="text/javascript">
eval(document.write("test"));
</script>
et aussi comme ceci :
<script type="text/javascript">
var test = "test";
var testf = eval(test);
document.write(testf);
</script>
et ça ne fonctionne absolument pas !

Est-ce que quelqu'un peut m'aider svp ?
J'aimerais vraiment savoir comment exécuter du javascript dans une page PHP appelée avec AJAX.

Ah oui, petite précision troublante ( troublante pour moi ) si je fais :

là ça fonctionne !!!
Donc, le problème, c'est que ce que je met entre les balises <SCRIPT> n'est pas pris en compte !

Quelqu'un à une solution ? svp.

A+,
Toorreezzz

12 réponses

Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
10
bonjour,
t'as pas du cherche beaucoup !
c'est un sujet récurent !

et c'est normal ! ajax retourne du texte dans une variable,
    ce n'est pas interprété coté client. à toi de le faire.
la question à se poser d'abord : est-ce réellement utile ?
met le javascript dans la page appelante et plus de souci.

si tu y tiens à tout pri ( mais je pense que c'est une absurdité que
de faire ainsi ) regarde les "bibliotèques de fonctions," elles le font toutes,
regarde aussi  un ch'tiot exemple ici
si ajax ne renvoie que de javascript SANS AUCUNE BALISE, un eval peut faire,
sinon, faut extraire le javascript, il existe une foultitude d'approches possible.

Cordialement

          [mon Site] [M'écrire] Bul         

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="ProgId" content="Word.Document" /><meta name="Generator" content="Microsoft Word 9" /><meta name="Originator" content="Microsoft Word 9" /><link rel="File-List" href="file:///D:/Temp/msoclip1/01/clip_filelist.xml" /><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:HyphenationZone>21</w:HyphenationZone>
<w:DoNotOptimizeForBrowser/>
</w:WordDocument>
</xml><![endif]--><style><!--
/* Font Definitions */
@font-face
{font-family:"Arial Unicode MS";
panose-1:2 11 6 4 2 2 2 2 2 4;
mso-font-charset:128;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-1 -369098753 63 0 4129023 0;}
@font-face
{font-family:"\@Arial Unicode MS";
panose-1:2 11 6 4 2 2 2 2 2 4;
mso-font-charset:128;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-1 -369098753 63 0 4129023 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";}
pre
{margin:0cm;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Arial Unicode MS";}
span.difg
{mso-style-name:difg;}
span.difd
{mso-style-name:difd;}
@page Section1
{size:595.3pt 841.9pt;
margin:70.85pt 70.85pt 70.85pt 70.85pt;
mso-header-margin:35.4pt;
mso-footer-margin:35.4pt;
mso-paper-source:0;}
div.Section1
{page:Section1;}
--></style>1ère approche :
ajax retourne une page html avec du javascript

, ----
demo.htm

,                          demo.php

, ----
<html>

  

      demo.htm

     
  style=" width:80%;

                         height:50%"

              id="txt">

      <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

     
  style=" width:80%;

                         height:50%"

              id="txt">

      <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');   ?>

, <!--[if !supportMisalignedColumns]-->----
, , , <!--[endif]-->
<!--[if !supportEmptyParas]--> <!--[endif]-->
Messages postés
8
Date d'inscription
jeudi 31 janvier 2008
Statut
Membre
Dernière intervention
7 janvier 2009

Salut,

C'est pas ça du tout, je penses...
Le problème c'est l'appel avec XHR de la page PHP.
Mais l'éxécution des script javascript sur cette page PHP !

Disons que ma page PHP s'appelle "test.php"
Sur cette page si je note :
<?php echo ("test"); ?> -> Cela fonctionne parfaitement.
Mais si je note :
<script type="text/javascript">
document.write("test");
</script>
-> Cela ne fonctionne pas du tout !

Je veux juste que mes script javascript s'affiche ! Aidez-moi svp et donnez moi un exemple concrêt svp... c'est important pour moi de pouvoir faire ça... sinon je ne saurais jamais complèter mon site.

Aussi, j'ai beaucoup cherché sur internet et toute les réponses que j'ai trouvée ne m'ont absolument pas aidé.
Donc si quelqu'un pouvait me dire comment faire ça se serait plus que génial !

Merci d'avance.
Torreezz
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
10
>>C'est pas ça du tout,
ben si,    enfin.... si tu causes avec ajax.

<script type="text/javascript">
document.write("test");
</script>
-> Cela ne fonctionne pas du tout !
c'est normal. je répète ?
ajax retourne du texte dans une variable,
    ce n'est pas interprété coté client. à toi de le faire.

comme en plus c'est un document.write, même si tu l'exécutais,
ça va commencer par effacer toute la page... y compris le javascript
et tes : var test = "test";
eval(test);
document.write(test);

eval d'une chaîne de caractères ? ça ne peut rien donner.

          [mon Site] [M'écrire] Bul         
Messages postés
8
Date d'inscription
jeudi 31 janvier 2008
Statut
Membre
Dernière intervention
7 janvier 2009

Ok j'ai compris ça merci.

Mais je n'arrive toujours pas à faire ce que je veux.
Le document.write ne fonctionne toujours pas (c'est juste un test, mais il faut que ça marche).

Comment tu ferais toi ?

Vu que tu as dis "ajax retourne du texte dans une variable".
Je me demande comment je dois faire alors pour déclarer un <script>...</script> ?

Je vais surement avoir l'air con, mais je ne comprend pas et même les réponses que j'ai vu sur internet ne m'aide en rien...

Aurais-tu la gentillesse de m'expliquer SVP.
Dis-moi comment éxécuter un document.write sur une page PHP appelée avec AJAX et je l'adapterai... si tu veux bien me donner un exemple de code...

Merci beaucoup d'avance...
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
10
>>Comment tu ferais toi ?
1° je ne retournerais pas du javascript dans la
    réponse d'ajax.
2° je n'utiliserai pas document.write


>>Aurais-tu la gentillesse de m'expliquer SVP.
>>Dis-moi comment éxécuter un document.write sur une page PHP appelée avec AJAX
faut encore répéter ? tu ne lis pas ce que j'écris ??
1° je t'ai donné un lien où il y a un exemple, dis de regarder les
    "bibliothèques de fonctions"
2° un exemple 1ère approche : ajax retourne une page html avec du javascript
    ( qui peut être évité et c'est beaucoup mieux )
3° et même si tu parviens à exécuter : je te répète que document.write va tout effacer !

          [mon Site] [M'écrire] Bul         
Messages postés
8
Date d'inscription
jeudi 31 janvier 2008
Statut
Membre
Dernière intervention
7 janvier 2009

J'ai lu et relu tes messages et tes exemples et ton lien...
Plus d'exemple ou de lien svp !

Je te donnes une dernière explication, après je continuerai ailleurs, car je n'aime pas trop le fait que je ne puisse pas éditer mes messages et qu'il n'y ai pas moyen de mettre des balises [code] pour plus de clarté...

Alors j'ai une page PHP avec des timestamp qui servent pour des enchères de manière à afficher tout en seconde.
Cette page PHP est appelée dans une div avec un fonction AJAX ("request") et est rafrîchie tout les secondes avec setInterval().

Ce qui donne quelque chose dans le genre :
<script type="text/javascript">
setInterval("request('ajax/page.php?id_bien=<?php echo $bien['id']; ?>','showtimeleft')", 1000);
</script>

Cette "page.php" doit contenir un script qui appelle une autre page dans une autre div.
L'appel de cette seconde page est :
<script type="text/javascript">
request('ajax/page2.php?id_bien=<?php echo $idbien; ?>','showenc');
</script>

DONC SI <SCRIPT> NE FONCTIONNE PAS, mon script non plus.

Alors NON il ne s'agit pas de document.write... c'était un exemple pour faciliter ta réponse.

Alors je repose ma question une toute dernière fois !
PAS DE REDIRECTION OU EXEMPLE PERSO SVP.
Comment on éxécute un <script> dans une page PHP appellée avec AJAX ???

Et ne me parle plus de tes trucs ici plus haut que ne ME servent à rien du tout.
C'est pas du tout ça que je fais. mes fonction AJAX sont beaucoup plus complète que ça et je n'appelle pas XHR sur mes pages mais via une source ce qui en soit m'évite de tout retaper...

Je le redis, tout fonctionne SAUF le code que je tape entre les balises <script> !

Donc, CE QUE JE DEMANDE, c'est qu'on me dise comment on fait !
PAS D'EXEMPLE PERSO, PAS DE REDIRECTION ET SURTOUT PAS ME PARLER DE VOTRE SITE OU DE VOS SCRIPTS, ça ne sert à rien, car j'ai juste une question que je souhaite adapter à MON site donc j'ai pas besoin de vos scripts que je ne compte pas télécharger.

Juste une phrase dans le genre... "bin mon piti torez, utilise ça et ça et ça ira !"
Simple non ? faites court ! faites bref ! merci

merci merci merci !!!
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
10
je ne peux plus rien pour toi,
sauf te conseiller d'apprendre à lire.
          [mon Site] [M'écrire] Bul         
Messages postés
8
Date d'inscription
jeudi 31 janvier 2008
Statut
Membre
Dernière intervention
7 janvier 2009

Soit !

Merci tout de même d'avoir essayé de m'expliquer !
Je vais chercher tout seul, car même en cherchant sur internet et en demandant sur d'autres forums personnes n'a pu m'aider :(

Je noterai ma solution ici si j'en trouve une un jour.

Merci tout de même.

A+,
Torez
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
10
c'est bien ce que je disais !!!!   faut que tu apprennes à lire !

>>Je vais chercher tout seul, car même en cherchant sur internet et en demandant
>>sur d'autres forums personnes n'a pu m'aider :(
je pense qu'ailleurs on ta donné l'équivalent de
ce que je t'ai donné... peut-être en mieux, peut
être en moins bien... ? mais tu ne lis pas.

>>Je noterai ma solution ici si j'en trouve une un jour.
inutile !  je l'ai déjà mise !!!

          [mon Site] [M'écrire] Bul         
Messages postés
8
Date d'inscription
jeudi 31 janvier 2008
Statut
Membre
Dernière intervention
7 janvier 2009

Voilà, c'est fait... y'a pas à dire c'était super simple (je dois être con).

Je vais essayer de donner une explication pour les gens qui ont le même problème.
Ajouter eval() a vos appel de page avec javascript.
et surtout faites-le en mode asynchrône (xml.open("get", page, false))

C'était assez simple en fait !
et c'est vrai que je devrais apprendre à lire !

Merci encore Bulette.

Je vais en faire un tuto complet je pense, surtout quand je vois le nombre de personnes qui cherche de l'aide à ce propos sur internet !

A+,
Torez
Messages postés
8
Date d'inscription
jeudi 31 janvier 2008
Statut
Membre
Dernière intervention
7 janvier 2009

Ah oui lol.

Bul3 pas Bulette ahahah
Et le tuto je le ferai sur Cerebral-Stream pour que ça me rapporte que euros :D

Merci pour ta patience avec un con comme moi en tout cas !
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
10
c'est totalement stupide.
comme si asynchrone ou pas à quelque chose à voir...
>>eval()
euh... donc ? je confirme : tu ne sais pas lire
>>faire un tuto complet je pense
si j'étais toi, j'éviterais d'être ridicule...
>>je dois être con
c'est toi qui le dit !
          [mon Site] [M'écrire] Bul