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] ajax / javascript


Sujet :

AJAX

  1. #1
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 605
    Par défaut [AJAX] ajax / javascript
    Bonjour

    Je teste l'AJAX depuis ce matin.
    Je viens de remarquer une chose un peu gênante.

    Si, avec un appel AJAX, je génère du nouveau code html dans ma page web et que ce code html contient du code javascript avec une fonction dedans, et bien cette fonction n'est pas trouvé si je l'appelle.

    En y réfléchissant, ce n'est pas si troublant que ça : le javascript est exécuté lors de l'ouverture de la page. Là, mon code est posé après l'ouverture de la page. Donc, il n'est ni exécuté, ni mémorisé

    Mais ? Peut-on mémoriser de force une fonction javascript qu'un script javascript fabriquerait (grâce au résultat d'un requette AJAX par exemple) ?
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  2. #2
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,

    Tu peux ajouter un élément script dynamiquement:
    Pour charger un script via une URL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            script = document.createElement("script"); 
            script.type = "text/javascript"; 
            script.src  = url; 
            document.getElementsByTagName("head")[0].appendChild(script);
    Pour charger un script via un code:
    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
     
    <html>
      <head>
      <script type="text/javascript">
     
      function go() {
            script = document.createElement("script"); 
            script.type = "text/javascript"; 
            script.text  = "function hello() { alert('Hello world !'); }"; 
            document.getElementsByTagName("head")[0].appendChild(script);   
      }
      </script>
     
      </head>
      <body>
      <button onclick="go();hello();">Test</button>
      </body>
    </html>
    ERE

  3. #3
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 605
    Par défaut
    Merci !

    En réfléchissant cette nuit, je pensais bien à la possibilité d'une telle chose : document.getElementsByTagName("head")[0].appendChild(script); . Mais je ne voyais pas laquelle.

    Je vais tester aujourd'hui ! Je crois qu'il faut prévoir dans le code même de la page mère le programme pour rajouter le script et après, il faut le rajouter en fonction du retour de l'AJAX => je vais donc essayer de profiter du X de AJAX aujourd'hui juste pour séparer le code html du code javascript. Je ne voyais pas encore d'intérêt de ce X, j'en ai enfin un.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  4. #4
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 605
    Par défaut
    Bonjour

    Je ne suis pas bien arrivé à faire du xml. Mais, je ne pense pas que ça aurait simplifié mon problème !
    Finalement, je génère une page php comme si je voulais faire un include, mais son format est FIGÉ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <script type='text/javascript'>
    //<![CDATA[
     
    Le code javascript
     
    //]]></script>
     
    Le code html
    La fonction qui traite ce code est :
    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
    <script type="text/javascript">
    //<![CDATA[
     
     function recup_ajax(texte,place)
     {
            script = document.createElement("script"); 
            script.type = "text/javascript";
     
            milieu=texte.indexOf("\/\/]]><\/script>",0)       
            script.text  = texte.substring(45,milieu-1); 
            document.getElementsByTagName("head")[0].appendChild(script);
            document.getElementById(place).innerHTML=texte.substring(milieu+14);
     
    }
    //]]></script>
    ET l'appel se fait de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       recup_ajax(xhr.responseText,"id où je vais mettre le code HTML");
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  5. #5
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,

    La démarche globale que tu aurais pu appliquer était d'extraire de ta page obtenue tous les textes Javascript et de les injecter comme script, puis le reste comme HTML.

    ERE

  6. #6
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 605
    Par défaut
    Tu veux dire sans place imposée au début pour le JS ?
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  7. #7
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Re,

    Oui, peut-être est ce une possibilité moins contraignante ?

    ERE

  8. #8
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 605
    Par défaut
    C'est moins contraignant pour le retour de l'appel ajax, mais beaucoup plus pour la récupération des données.

    J'ai fait le choix du moindre travail pour une performance toute aussi bonne
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

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

Discussions similaires

  1. [AJAX] Ajax et javascript non executé!
    Par sunshine33 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 30/10/2007, 09h44
  2. [AJAX] Ajax ou Javascript ?
    Par Molos dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/12/2006, 13h54
  3. [AJAX] ajax et javascript
    Par piro dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/06/2006, 16h36
  4. [AJAX] Ajax et javascript contenu
    Par zekey dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 30/09/2005, 20h16
  5. [AJAX] AJAX et javascript
    Par spud5351 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/09/2005, 10h16

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