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

JavaScript Discussion :

[AJAX] interpréter JS dans un responseText


Sujet :

JavaScript

  1. #1
    Membre averti
    Avatar de onet
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    365
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2002
    Messages : 365
    Points : 344
    Points
    344
    Par défaut [AJAX] interpréter JS dans un responseText
    Salutation a tous,

    Bon, j'ai un grave problème :s.

    J'ai absolument besoin d'interpréter du code javascript retourné par une requête Ajax via un responseText, et sans aucunes action. Savez vous comment le faire?


    Je m'explique un peu mieux. J'ai, par exemple, une page toto.inc qui contient:
    <input type="button" id="toto" />
    <script>
    var tata = document.getElementById('toto');
    tata.onclick = function(){
    alert('toto');
    }
    </script>
    J'ai ensuite une page html qui appel via ajax cette page toto.inc
    et me l'affiche dans une div. Je voudrais en conséquence que le click sur le bouton nouvelllement affiché me soit reconnu et m'affiche mon alert.

    Mais... Ca ne fonctionne pas . une idée de comment je peux faire? C'est un exemple tout simple, mais c'est la base complète d'un projet :s

    Onet

    P.S: on a testé en placant un onclick dans notre bouton et en déclarant une fonction qui faisait la meme chose, sans plus de succès!

    Pour résumer, on a besoin d'initialiser des fonction récupérée via une requête Ajax...

  2. #2
    Membre confirmé Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Points : 460
    Points
    460
    Par défaut
    As-tu essayé d'avoir une bibliothèque de fonctions que tu charges par la balise script ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script src="mabiblio.js" ...></script>
    c'est ce que j'utilise habituellement et ça fonctionne (du moins chez moi)
    Mais, c'est vrai que ça ne marche pas forcément si tes fonctions sont générées dynamiquement et ne peuvent pas prendre en paramètres les éléments variables...

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Points : 872
    Points
    872
    Par défaut
    Bonjour,

    je ne suis pas sûr que ça marche mais tu peux essayer :

    au retour de ton responseText, tu fais :
    par contre ça nécessite d'enlever les balises <script>..

    Sinon, quand tu veux que ton ajout d'élément par AJAX interagisse avec JS, il vaut mieux rajouter ton élément en suivant les procédures DOM.
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var bouton = document.createNode("input");
    bouton.onclick = function(){
    alert('toto');
    }
    var tonNouveauDiv = document.getElementById("tonDiv");
    tonNouveauDiv.appendChild(bouton);
    et une autre alternative encore plus simple :

    tu mets le script de ta fonction dans l'en-tête de la page, tu ne rajoutes que le bouton avec AJAX...

  4. #4
    Membre averti
    Avatar de onet
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    365
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2002
    Messages : 365
    Points : 344
    Points
    344
    Par défaut
    Salut,

    Non, en fait ca ne change rien, car le souci, c'est que le javascript est initialisé lors du chargement de la page, ce qui ne se fait pas lors du retour de la requête Ajax.

    la solution qu'on a trouvé, pour le moment, c'est lors du retour de placer le code javascript dans un div appelée script (par exemple), et de faire un eval javascript de celle-ci.

    Je vasi tester a fond cette méthode, si d'autres ont des idées?

    Onet

    ( )

  5. #5
    Membre averti
    Avatar de onet
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    365
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2002
    Messages : 365
    Points : 344
    Points
    344
    Par défaut
    Citation Envoyé par ziggotos
    Bonjour,

    je ne suis pas sûr que ça marche mais tu peux essayer :

    au retour de ton responseText, tu fais :
    par contre ça nécessite d'enlever les balises <script>..

    Sinon, quand tu veux que ton ajout d'élément par AJAX interagisse avec JS, il vaut mieux rajouter ton élément en suivant les procédures DOM.
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var bouton = document.createNode("input");
    bouton.onclick = function(){
    alert('toto');
    }
    var tonNouveauDiv = document.getElementById("tonDiv");
    tonNouveauDiv.appendChild(bouton);
    et une autre alternative encore plus simple :

    tu mets le script de ta fonction dans l'en-tête de la page, tu ne rajoutes que le bouton avec AJAX...
    Oui, c'est la solution que l'on a testé et qui semble fonctionner.

    par contre, pour le script dans l'entête et ne rajouter que le bouton, ce n'est pas possible, car le contenu est totalement dynamique, donc ca ferait une page trop lourde a charger (pour résumer, c'est un CMS totalement axé sur un couple AJAX/PHP5, avec aucuns chargement de pages ultérieur, si ce n'est via Ajax!)

    Merci, je test tout ca, et je reviens

    Onet

  6. #6
    Membre averti
    Avatar de onet
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    365
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2002
    Messages : 365
    Points : 344
    Points
    344
    Par défaut
    Tadam! Ca fonctionne... Sauf... sous... Allez, devinez sous quel navigateur pourri ca ne fonctionne pas... Allez, vous voulez un indice ou vous avez devinez ce truc tout pourris dont le logo contient un e en bleu...

    Onet qui va se pendre...

    P.S: FF, Opera, etc sans souci, évidemment...

  7. #7
    Membre éclairé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Points : 872
    Points
    872
    Par défaut
    qu'est-ce qui ne marche pas ?
    la prise en charge de l'élément par JS ou juste la prise en charge du onclick ?

  8. #8
    Membre averti
    Avatar de onet
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    365
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2002
    Messages : 365
    Points : 344
    Points
    344
    Par défaut
    un souci de transport selon Iexplorer:

    XMLHttpTransport.watchInFlight Error: [object Error]




    Il n'affiche pas la page, rien du tout. C'est pas le eval qui pose souci. Il semblerait que le contenu renvoyé ne lui convienne pas. hallucinant!

    Onet

  9. #9
    Membre éclairé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Points : 872
    Points
    872
    Par défaut
    houla, je touche pas à ça moi...

    bon courage

  10. #10
    Membre averti
    Avatar de onet
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    365
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2002
    Messages : 365
    Points : 344
    Points
    344
    Par défaut
    bon, on a résolu le souci. A titre d'information, IExplorer n'accepte pas cette forme (en sachant que que ma requète Ajax me renvois 2 div: une content qui contient ce qu'il faut afficher et l'autre script en hidden qui contient le script JS a évaluer):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var script = document.getElementById('script')
    eval(script)
    mais qu'il accepte de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    eval(document.getElementById('script'))
    dans l'absolue, ca ne change absolument rien, mais faut juste le savoir...

    Onet

Discussions similaires

  1. [AJAX] Retour chariot dans un textarea avec AJAX
    Par Death83 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 18/09/2006, 22h32
  2. Interprétation XML dans un JTextPane
    Par Djakisback dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 22/05/2006, 03h31
  3. Connaissez-vous LUA ? un language interprété utilisé dans de nombreux jeux
    Par zMurfs dans le forum Développement 2D, 3D et Jeux
    Réponses: 3
    Dernier message: 18/05/2006, 22h34
  4. [AJAX] ajax et le # dans la barre de titre
    Par speedev dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 18/05/2006, 15h21
  5. [AJAX] requète sql dans js
    Par cheers94wow dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/05/2006, 13h24

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