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
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
Salut,
Peux-tu montrer à quoi ressemble ton code?
tu as par exemple un code qui sur un clic change le contenu d'une div:
Voila la code initial de la div:
Tu clique sur ton lien qui va aller chercher avec ajax un fichier php
Code : Sélectionner tout - Visualiser dans une fenêtre à part <div id="test">salut, ta pas encore cliqué</div>
Voila le contenu du fichier php
Ce contenu va se mettre dans la DIV 'test'
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';
Mais je ne vais pas avoir le alert qui va sortir...
pas d'idée?
je pense que c'est un pb commun
merci
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.
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:
Et j'ai mon ajax, utilisant la librairie prototype:
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo "<script>alert('hello');</script>"
Que dois je faire:
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 } );
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:
Prototype dois avoir ce genre de méthode déja incrémentée non?
Code : Sélectionner tout - Visualiser dans une fenêtre à part ]echo eval("<script>alert('hello');</script>")[/
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.
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).
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):
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() {alert("bien recu");});
ce qui est beaucoup mieux que les alert car non bloquant!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $$(".test").invoke("observe", function() {console.debug("bien recu");});
Bah je viens de tester:
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 } );
Tu l'as...
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 } );
J'ai essayé le coup de mettre text/javascript dans le header de la réponse, ca a pas marché par contre oO
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:
et non pas comme ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 { toto:"foo", titi:["bar", "foobar"], tutu: 5 }
ce que tu as du faire
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>
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
2echo '<script type="text/javascript" src="prototype.js"></script>';
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager