Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > Prototype & Script.aculo.us
Prototype & Script.aculo.us Forum d'entraide sur les frameworks Prototype et Script.aculo.us
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/02/2008, 23h03   #1
Membre régulier
 
Avatar de hugo69
 
Inscription : avril 2005
Messages : 498
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 498
Points : 91
Points : 91
Par défaut [Prototype] 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
hugo69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2008, 08h21   #2
Invité de passage
 
Inscription : février 2008
Messages : 5
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 5
Points : 3
Points : 3
Salut,
Peux-tu montrer à quoi ressemble ton code?
nemoz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2008, 13h54   #3
Membre régulier
 
Avatar de hugo69
 
Inscription : avril 2005
Messages : 498
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 498
Points : 91
Points : 91
tu as par exemple un code qui sur un clic change le contenu d'une div:

Voila la code initial de la div:

Code :
<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 :
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...
hugo69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2008, 18h28   #4
Membre régulier
 
Avatar de hugo69
 
Inscription : avril 2005
Messages : 498
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 498
Points : 91
Points : 91
pas d'idée?

je pense que c'est un pb commun

merci
hugo69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2008, 10h10   #5
Modérateur
 
Avatar de DoubleU
 
Inscription : janvier 2006
Messages : 1 107
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 1 107
Points : 1 118
Points : 1 118
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.
DoubleU est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2008, 18h31   #6
Membre régulier
 
Avatar de hugo69
 
Inscription : avril 2005
Messages : 498
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 498
Points : 91
Points : 91
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 :
echo "<script>alert('hello');</script>"
Et j'ai mon ajax, utilisant la librairie prototype:

Code :
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 :
]echo eval("<script>alert('hello');</script>")[/
Prototype dois avoir ce genre de méthode déja incrémentée non?
hugo69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2008, 09h10   #7
Modérateur
 
Avatar de DoubleU
 
Inscription : janvier 2006
Messages : 1 107
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 1 107
Points : 1 118
Points : 1 118
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.
DoubleU est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2008, 09h22   #8
Candidat au titre de Membre du Club
 
Inscription : août 2003
Messages : 12
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 12
Points : 12
Points : 12
Envoyer un message via AIM à temsa
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).
temsa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2008, 09h29   #9
Candidat au titre de Membre du Club
 
Inscription : août 2003
Messages : 12
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 12
Points : 12
Points : 12
Envoyer un message via AIM à temsa
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 :
<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 :
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 :
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 :
1
2
 
$$(".test").invoke("observe", function() {console.debug("bien recu");});
ce qui est beaucoup mieux que les alert car non bloquant!
temsa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2008, 10h16   #10
Modérateur
 
Avatar de DoubleU
 
Inscription : janvier 2006
Messages : 1 107
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 1 107
Points : 1 118
Points : 1 118
Bah je viens de tester:
Code :
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 :
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
DoubleU est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2008, 22h37   #11
Candidat au titre de Membre du Club
 
Inscription : août 2003
Messages : 12
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 12
Points : 12
Points : 12
Envoyer un message via AIM à temsa
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 :
1
2
3
4
5
6
 
{
toto:"foo",
titi:["bar", "foobar"],
tutu: 5
}
et non pas comme ça:
Code :
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
temsa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/03/2008, 19h00   #12
Membre régulier
 
Avatar de karimphp
 
Développeur Web
Inscription : avril 2006
Messages : 183
Détails du profil
Informations personnelles :
Âge : 31

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2006
Messages : 183
Points : 76
Points : 76
Envoyer un message via Yahoo à karimphp Envoyer un message via Skype™ à karimphp
salut peut on utiliser ca sans utiliser le prototype.js parceque pour moi la chaine retourner est ce lui la :
Code :
1
2
 
echo '<script type="text/javascript" src="prototype.js"></script>';
karimphp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2008, 11h51   #13
Membre régulier
 
Avatar de hugo69
 
Inscription : avril 2005
Messages : 498
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 498
Points : 91
Points : 91
Citation:
Envoyé par DoubleU Voir le message
Bah je viens de tester:
[CODE]

Code :
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...
hugo69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h28.


 
 
 
 
Partenaires

Hébergement Web