Exécuter un javascript dans une page PHP chargée par AJAX

Résolu
roro59650 Messages postés 99 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 28 juillet 2011 - 4 mars 2008 à 14:07
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 7 mars 2008 à 14:54
Bonjour tout le monde,

Tout d'abord, merci de me lire!
Bon ensuite, pour ce qui m'intéresse : j’ai une application intranet, donc je peut utiliser le javascript à loisir, il n’y à pas de problèmes ! Dans le menu cette application, je charge une page qui contient une liste extraite de ma base de données. Mais ce que je veut aussi, c’est qu’il y ai une fonction javascript qui cache certaines lignes (chose que je pourrais faire en php, mais je préfère le javascript). Ma fonction JS, je la déclarais au chargement de la page lorsque j’incluais ma page avec un include (donc page blanche en attente de l’affichage..). Mais maintenant, avec l’inclusion en AJAX, ma fonction JS ne s’exécute plus. Même lorsque je la met directement dans le code de la page html…

Savez vous pourquoi ? Auriez-vous une idée de comment faire ? Ou dois-je abandonner ma fonction JS pour faire en php ?

Merci beaucoup d'avance, j'espère avoir été clair, sinon, n'hésitez pas à me poser des questions

Merci encore!
un site qui s'ameliore de jour en jour

40 réponses

cs_ju_p Messages postés 22 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 11 septembre 2008
5 mars 2008 à 15:19
Je me suis penchée plus précisément sur la question et voilà la bonne fonction !

function load_page(select,Conteneur) {
    var xhr2 = new_xhr();//On crée un nouvel objet XMLHttpRequest
   
    if(select!=""){
        xhr2.onreadystatechange = function(){
            if ( xhr2.readyState == 4 ){//Actions executées une fois le chargement fini
                if(xhr2.status  != 200){//Message si il se preoduit une erreur
                    document.getElementById(Conteneur).innerHTML ="Error code " + xhr2.status;
                } else {//On met le contenu du fichier externe dans la div
                    var c= document.getElementById(Conteneur);
                c.innerHTML = xhr2.responseText;
                var allscript = c.getElementsByTagName('script');
                   for(var i=0;i< allscript.length;i++){
                    eval(allscript[i].text);
                }
            } else {//Message affiché pendant le chargement
                document.getElementById(Conteneur).innerHTML = "Chargement en cours ...
";
            }
        }
        xhr2.open("GET", select, true);//Appel du fichier externe
        xhr2.send(null);
    }else{
        document.getElementById(Conteneur).innerHTML = "";
    }
   
}

Ju
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
4 mars 2008 à 14:32
Bonjour,

    tu inclus la fonction js avec ajax ?
        c'est normal alors, finalement, pour être simple, on peut dire que le php retourne du texte...
        il y a des solutions pour faire... mais si on peut éviter,
            tant qu'à faire inituile d'alourdir...
        il doit y avoir un tuto, ou au moins des explications... sur CodesSources
      
    ta fonction est dans la page html ?   pas de raisons,
       sauf qu'elle ne doit pas être déclenchée ou qu'il y a une erreur dans ce contexte.

<hr />                Cordialement            Bul        
0
roro59650 Messages postés 99 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 28 juillet 2011 1
4 mars 2008 à 14:44
www.le-roro.fr un site qui s'ameliore de jour en jour
0
roro59650 Messages postés 99 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 28 juillet 2011 1
4 mars 2008 à 14:44
Bonjour Bultez,


Toujours toi qui me réponds^^ !


En fait, ma fonction est incluse dans ma page html tel quel :



<script language="Javascript"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??>





<!--






            alert(« Test du boudin ! »);





//-->





</script>






Donc bon, je ne vois pas trop où pourrais être une éventuelle erreur…


Ce que je pige pas, c’est que si le php est bien exécuté, pourquoi pas le javascript ?!


Enfin, merci de ta réponse, je continue de fouiner sur le net et CodesSources !





un site qui s'ameliore de jour en jour
0

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

Posez votre question
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
4 mars 2008 à 14:54
>>ce que je pige pas, c'est que si le php est bien exécuté, pourquoi pas le javascript ?!
    le php renvoie du texte.
    si c'est "php classique", ce texte sera interprété, donc le javascript exécuté
    si c'est "ajax",  la réponse de php est mise dans une variable javascript...
        tu en fais ce que tu veux, et si tu veux y exécuter le javascript peut-être contenu...
        à toi de faire.
        pas si simple !!!  même si des exemples existent !
<hr />                Cordialement            Bul        
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
4 mars 2008 à 15:00
tu n'as d'ailleurs pas répondu à ma question?
    ce javascript existe dans la page ou est chargé avec AJAX ?

et entre nous alert(« Test du boudin ! »);
             ou   alert(" Test du boudin ! ");   déjà peut-être ?

    soit c'est une erreur js, et dans ce cas, une erreur est affichée   **

    soit c'est chargé avec ajax, donc non exécuté

**


¡————————¡——————————————————————————————————————————————————————————¡
|FireFox |regarder la "console d'erreurs" |
| | Outils / Console d'erreurs |
| | |
| | et mieux, télécharger FireBug |
¦————————¦——————————————————————————————————————————————————————————¦
|Internet|activer le deboggage : Outils/options Internet/Avancés |
|Explorer| dans la liste, sous "Navigation" : décocher |
| | ° Afficher une notification de chaque erreur de script |
| | ° Désactiver le débogage de Scripts (Internet Explorer) |
| | |
| | et mieux, télécharger le Debogger IE |
¦————————¦——————————————————————————————————————————————————————————¦
|K—Meleon|regarder la "console d'erreurs" |
| | Outils / Console d'erreurs |
¦————————¦——————————————————————————————————————————————————————————¦
|Opera |regarder la "console d'erreurs" |
| | utils / Asole d'erreurs |
¦————————¦——————————————————————————————————————————————————————————¦
|Safari |regarder Debug / Show JavaScript Console |
| | |
| |modif Fichier "Support:\Documents and Settings\utilisateur|
| |\Application Data\Apple Computer\Safari\Preferences.plist"|
| | y ajouter <key>IncludeDebugMenu</key> |
| | <true/> |
!————————!——————————————————————————————————————————————————————————!

<hr />                Cordialement            Bul        
0
roro59650 Messages postés 99 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 28 juillet 2011 1
4 mars 2008 à 15:04
Ok, merci pour tout !


Je pense que je pourrais réussir … si j’avais le temps !


Peut-être qu’un jour…


Enfin bref, je vais passer à une version php + ajax, mais en remplaçant la fonction javascript par un bon « LIMIT » dans ma requête !


Sur ce, bonne après-midi, et merci encore biloute ! (j’suis du ch’Nord hein, l’prend pas mal^^).





un site qui s'ameliore de jour en jour
0
roro59650 Messages postés 99 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 28 juillet 2011 1
4 mars 2008 à 15:06
Pour la non-réponse à ta question :
En fait, ma fonction est incluse dans ma page html tel quel :

<script language="Javascript"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??>

<!--

            alert(« Test du boudin ! »);

//-->

</script>

Donc bon, je ne vois pas trop où pourrais être une éventuelle erreur.
cf : plus haut...

Et les guillemets sont dûes à Word, c'est des " en fait.

Donc voilà quoi. Tant pi pour l'Ajax!

Merci encore!
un site qui s'ameliore de jour en jour
0
roro59650 Messages postés 99 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 28 juillet 2011 1
4 mars 2008 à 15:09
Enfin, pour être vraiment clair, ma fonction se trouve dans le code HTML de la page php qui est chargée par l'Ajax.
un site qui s'ameliore de jour en jour
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
4 mars 2008 à 15:24
>ma fonction se trouve dans le code HTML de la page php qui est chargée par l'Ajax.
    donc aucune raison, sauf les "    ;o)
    avec FF ( par exemple )

Erreur : illegal character
Fichier source : file:///D:/Temp/new%201.htm
Ligne : 5, Colonne : 18   ( et ça pointe le « )
Code source :
            alert(« Test du boudin ! »);

    ou il se produit une erreur avant d'arriver là....
<hr />                Cordialement            Bul        
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
4 mars 2008 à 15:26
et fainalement
>>ma fonction se trouve dans le code HTML de la page php qui est chargée par l'Ajax
    ce n'est pas si clair que cela...
        soit c'est dans le html            ça baigne
        soit c'est chargé avec ajax     non exécuté
   
<hr />                Cordialement            Bul        
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
4 mars 2008 à 15:29
soyons très,très  précis   ;o)
    si tu enlèves ajax...  
        ce javascript est-il là ?   oui   : plante-t-il ?
<hr />                Cordialement            Bul        
0
roro59650 Messages postés 99 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 28 juillet 2011 1
4 mars 2008 à 15:34
Pfiou, c'est l'aprem, et j'ai du mal^^.
En fait, les "« " sont dûs à Word, là ou j'ai tapé le message. Mais sinon, dans le code, c'est bien des doubles quotes comme ça : ".
J'ai une debug bar sur IE, c'est pas super, mais on voit quand il y a des erreurs.
J'ai essayé de charger une page HTML avec ajax. Voilà le code HTML :
<html>
 <head>
  <title>Test Ajax</title>
 </head>



 
  <script language="Javascript">
  <!--
   alert(document.getElementById('Affichage').checked);
   AfficheLigneDebut('<?php echo $PageMaximum ?>');
  //-->
  </script>
  Coucou koko!



 



</html>

Et la fonction Ajax :
//Fonction AJAX qui ouvre une page dans la balise "CorpsPage" de la page principale
function ChargementPage(url)
{
var url = "Test/TestAjax.html";
 var xhr_object = null;
    if(window.XMLHttpRequest)  xhr_object = new XMLHttpRequest();
   else
     if (window.ActiveXObject)  xhr_object = new ActiveXObject("Microsoft.XMLHTTP");

 // On ouvre la requete vers la page désirée
 xhr_object.open("GET", url, true);
 xhr_object.onreadystatechange = function(){
  if ( xhr_object.readyState == 4 )
  {
   // j'affiche dans la DIV spécifiée le contenu retourné par le fichier
   document.getElementById('CorpsPage').innerHTML = xhr_object.responseText;
  }
 }
 // dans le cas du get
 xhr_object.send(null);

 alert("Chargement fait!");
}
Enfin, il reste bien des mystères!
un site qui s'ameliore de jour en jour
0
roro59650 Messages postés 99 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 28 juillet 2011 1
4 mars 2008 à 15:37
www.le-roro.fr un site qui s'ameliore de jour en jour
0
roro59650 Messages postés 99 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 28 juillet 2011 1
4 mars 2008 à 15:38
Je me suis trompé dans le code HTML pour le javascript. Voici le bon code :

<html>
 <head>
  <title>Test Ajax</title>
 </head>



 
  <script language="Javascript">
  <!--
   alert("Test du boudin!");
  //-->
  </script>
  Coucou koko!



 



</html>

Et cette page marche très bien lancée directement sur IE! un site qui s'ameliore de jour en jour
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
4 mars 2008 à 16:09
>>Et cette page marche très bien lancée directement sur IE!
    très bien   ( ça me rassure ! )

    puis tu essayes de la charger avec ajax ?
       et le javascript n'est pas exécuté ?
       comme expliqué : c'est normal !
       avec ajax, c'est renvoyé dans une variable, donc non interprété.  
   
    on est d'accord là ?

<hr />                Cordialement            Bul        
0
roro59650 Messages postés 99 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 28 juillet 2011 1
4 mars 2008 à 16:25
Huuum, d'accord. Il me semble voir un peu le bout du tunnel là!
Ok. Donc l'Ajax charge la page php, html ou autre, "prends" le texte de résultat, et la met dans une variable. Puis, elle affiche le texte grâce à l'innerHTML.
J'espère avoir compris^^. C'est donc pour ça que la page php chargée avec Ajax ne reconnait pas les variables php de la page contenante!
Bon ok, merci pour ces éclairages!!
Et sinon, une autre question^^ :
J'ai une page qui a plusieurs liens Ajax dedans, du type : [javascript:ChargementPage('Test/TestAjax.html'); <td>Nom - Pr&eacute;nom</td>].
Avec la même fonction Ajax que j'ai donné plus haut, en ayant enlevé le "var url = ..." bien sûr. Mais bien évidemment, aucune ne marche...
Voilà, si t'a une idée...
Après, j'arrête, promis!
un site qui s'ameliore de jour en jour
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
4 mars 2008 à 16:47
>>

Donc l'Ajax charge
    pas tout à fait.
    javascript appelle un php avec ajax
       qui répond dans une variable javascript

>>la page php chargée avec Ajax ne reconnait pas les variables php de
la page contenante!
    pas tout à fait.
    ça ne se déroule ni sur la même machine, ni en même temps
    coté serveur :
        le php "génère" un (disons) fichier   et le renvoie
           puis il se termine, n'existe plus.
       il ne sait pas comment il a été appelé.
    cote client ( html/javascript )
           si c'est un appel "normal" ( formulaire ... ), la réponse

                 est affichée, donc interprétée

          si c'est un appel ajax ==> variable javascript

          mais php : y'en a plus. seule subsiste le fichier généré.

>>la même fonction Ajax que j'ai donné plus haut,    aucune ne marche.
    doit y avoir une erreur....
    nombreux exemples partout       en voici un, choisi au hasard ;o)  : TAG
    regarde et si tu ne t'en sort pas : poser une nouvelle question ?

   

<hr />                Cordialement            Bul        
0
roro59650 Messages postés 99 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 28 juillet 2011 1
4 mars 2008 à 16:50
Ok, merci beaucoup!
Je file, j'ai mon train!
Merci encore pour tout!
Et bonne soirée!
un site qui s'ameliore de jour en jour
0
cs_ju_p Messages postés 22 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 11 septembre 2008
5 mars 2008 à 08:59
Bonjour,

Pour pouvoir exécuter du javascript dans une page chargée en ajax il te faut utiliser la fonction eval().
Dans ta fonction ajax qui charge la page, au lieu d'écrire :
document.getElementById(Conteneur).innerHTML = xhr2.responseText'; (par exemple)
il te faut mettre :
document.getElementById(Conteneur).innerHTML = eval('xhr2.responseText');

Ju
0
Rejoignez-nous