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

Bibliothèques & Frameworks Discussion :

Ajax et réponse javascript [Prototype]


Sujet :

Bibliothèques & Frameworks

  1. #1
    Membre régulier Avatar de hugo69
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    512
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 512
    Points : 122
    Points
    122
    Par défaut Ajax et réponse javascript
    Bonjour,

    Lorsque que je recois ma réponse ajax, je place le code recu dans ma div.

    A l'intérieur du code recu je demande, l'execution d'une fonction javascript mais celle ci ne se lance pas sous IE.

    est ce normal?


    merci

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 6
    Points : 9
    Points
    9
    Par défaut
    Salut,
    Peux-tu montrer à quoi ressemble ton code?

  3. #3
    Membre régulier Avatar de hugo69
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    512
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 512
    Points : 122
    Points
    122
    Par défaut
    tu as par exemple un code qui sur un clic change le contenu d'une div:

    Voila la code initial de la div:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="test">salut, ta pas encore cliqué</div>
    Tu clique sur ton lien qui va aller chercher avec ajax un fichier php

    Voila le contenu du fichier php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo '<script type="text/javascript">alert("bien recu");</script>
    tu as bien cliquer';
    Ce contenu va se mettre dans la DIV 'test'

    Mais je ne vais pas avoir le alert qui va sortir...

  4. #4
    Membre régulier Avatar de hugo69
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    512
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 512
    Points : 122
    Points
    122
    Par défaut
    pas d'idée?

    je pense que c'est un pb commun

    merci

  5. #5
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    Fais voir le code de ta requete Ajax.

    Parce que dedans, si tu ne demandes pas l'évaluation de ton retour php, c'est normal que le javascript ne s'exécute pas.

  6. #6
    Membre régulier Avatar de hugo69
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    512
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 512
    Points : 122
    Points
    122
    Par défaut
    je n'ai pas bien compris si tu voulais la réponse renvoyée par PHP, ou la commande demandée sur le retour par ajax.

    J'utilise prototype.

    En effet, je me rappel de cette fonction eval.

    imaginons la réponse donnée par ajax est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<script>alert('hello');</script>"
    Et j'ai mon ajax, utilisant la librairie prototype:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var requete = new Ajax.Updater( 
    	  'mondiv', 
    	  'ajax.php', { 
    		method: 'post', 
    		parameters: parametres
    		} );
    Que dois je faire:
    créer l'évènement onComplete sur le code Ajax, et mettre un eval() javascript sur le retour OU mettre la fonction eval de PHP dans le fichier PHP genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ]echo eval("<script>alert('hello');</script>")[/
    Prototype dois avoir ce genre de méthode déja incrémentée non?

  7. #7
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    Je parlais de la fonction eval de javascript.

    Dans la doc de Ajax.Updater, ils spécifient l'option evalScripts pour évaluer le script automatiquement, essaie de la rajouter pour voir.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 12
    Points : 13
    Points
    13
    Par défaut
    elle y est par défaut si tu as le bon type mime (header à mettre pr lui dire que c'est du javascript, cf doc Prototype).

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 12
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par hugo69 Voir le message
    tu as par exemple un code qui sur un clic change le contenu d'une div:

    Voila la code initial de la div:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="test">salut, ta pas encore cliqué</div>
    Tu clique sur ton lien qui va aller chercher avec ajax un fichier php

    Voila le contenu du fichier php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo '<script type="text/javascript">alert("bien recu");</script>
    tu as bien cliquer';
    Ce contenu va se mettre dans la DIV 'test'

    Mais je ne vais pas avoir le alert qui va sortir...
    Euh ca sert a rien de le mettre dans la div, c'est mieu de le mettre dans un fichier .js à part (arrêtez de mélanger votre code et votre vue boudiou ! )

    Par contre il faut lui dire que tu veux qu'il lance une fonction lors du click. Si tu utilises Prototype, ça devrait donner ça (comme ya pas d'id j'itère sur la class test, seul element distinctif que je peux utiliser de ta div):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $$(".test").invoke("observe", function() {alert("bien recu");});
    Si tu as Firefox + firebug (que je te conseil très très vivement), tu peux aussi faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $$(".test").invoke("observe", function() {console.debug("bien recu");});
    ce qui est beaucoup mieux que les alert car non bloquant!

  10. #10
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    Bah je viens de tester:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var requete = new Ajax.Updater( 
    	  'mondiv', 
    	  'ajax.php', { 
    		method: 'post', 
    		parameters: parametres
    		} );
    Effectivement t'as pas le alert, mais si tu rajoutes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var requete = new Ajax.Updater( 
    	  'mondiv', 
    	  'ajax.php', { 
    		method: 'post', 
    		parameters: parametres,
                    evalScripts : true
    		} );
    Tu l'as...

    J'ai essayé le coup de mettre text/javascript dans le header de la réponse, ca a pas marché par contre oO

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 12
    Points : 13
    Points
    13
    Par défaut
    c'est parceque tu lui a donné du html pas du json:

    enleve la balise, gardes que le code.

    evalScript c'est fait pour si on utilise du html mélangé a du script (c'est très mal, ça pue et ça pollue) alors il interepretre les balises script comme qd on affiche une page avec du script dedans dans le navigateur directement.

    Je te parlais personnellement d'ecrire directement ton JS sous forme JSON, ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    {
    toto:"foo",
    titi:["bar", "foobar"],
    tutu: 5
    }
    et non pas comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <script type="text/javascript">
    var foobar ={
    toto:"foo",
    titi:["bar", "foobar"],
    tutu: 5
    }
    </script>
    ce que tu as du faire

  12. #12
    Membre régulier Avatar de karimphp
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 183
    Points : 110
    Points
    110
    Par défaut
    salut peut on utiliser ca sans utiliser le prototype.js parceque pour moi la chaine retourner est ce lui la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo '<script type="text/javascript" src="prototype.js"></script>';

  13. #13
    Membre régulier Avatar de hugo69
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    512
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 512
    Points : 122
    Points
    122
    Par défaut
    Citation Envoyé par DoubleU Voir le message
    Bah je viens de tester:
    [CODE]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var requete = new Ajax.Updater( 
    	  'mondiv', 
    	  'ajax.php', { 
    		method: 'post', 
    		parameters: parametres,
                    evalScripts : true
    		} );

    C'est exactement ca que je cherchais....

    Tx a lot...

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

Discussions similaires

  1. [AJAX] Ajax et attente javascript
    Par Decap dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/01/2008, 11h02
  2. [AJAX] Conflit entre script Ajax et scripts Javascript
    Par Mingain dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/10/2007, 13h18
  3. [AJAX] générer du Javascript
    Par tanglung dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 19/12/2006, 15h30
  4. [AJAX] ajax et fonction javascript
    Par locs dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/08/2006, 16h56
  5. [AJAX] Problème de javascript / compatibilité
    Par Pepe67 dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 30/06/2006, 12h30

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