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 03/03/2006, 16h43   #1
Invité de passage
 
Inscription : mars 2006
Messages : 2
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 2
Points : 1
Points : 1
Par défaut Probleme avec prototype.js

Bonjour,

Newbie avec javascript je ne me sort pas d'un problème avec la librairie prototype.js. C'est un problème de portée de variables.

Voici le script qui pose problème.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
ProblemClass = Class.create();
 
ProblemClass.prototype = {
 
   initialize: function() {
 
      this.message = 'ceci est un message';
 
      new Ajax.Request( 'probleme.php', {method: 'get', onComplete: this.onCompleteMethode});
 
   },
 
   onCompleteMethode: function(response) {
 
      alert(this.message);
 
   }
 
}
La fonction alert dans la méthode onCompleteMethode renvoie 'undefined' . (j'utilise FireFox). Alors que this.message est bien défini dans la méthode initialize.

Le HTML utilisé est le suivant :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<html>
  <head>
	<script type='text/javascript' src='prototype.js'></script>
	<script type='text/javascript' src='probleme.js'></script>
 
  </head>
  <body>
      <script>
 
        var newDummy = new ProblemClass();
 
    </script>
  </body>
</html>
Pour info les xml et php référencés mais sans grand intérêt.

Code :
1
2
3
4
5
<?php
 
echo  file_get_contents('probleme.xml');
 
?>
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?xml version='1.0' encoding='UTF-8'?>
<ajax-response>
	<response type="element" id="">
		<row>
			<Title>Titre1</Title>
			<FirstName>Prenom1</FirstName>
			<LastName>Nom1</LastName>
		</row>
		<row>
			<Title>Titre2</Title>
			<FirstName>Prenom2</FirstName>
			<LastName>Nom2</LastName>
		</row>
		<row>
			<Title>Titre3</Title>
			<FirstName>Prenom3</FirstName>
			<LastName>Nom3</LastName>
		</row>
		<row>
			<Title>Titre4</Title>
			<FirstName>Prenom4</FirstName>
			<LastName>Nom4</LastName>
		</row>
	</response>
</ajax-response>

Je vous remercie d'avance pour votre aide.

Sincèrement,

Roger
Roger (Bordeaux) est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2006, 18h52   #2
Invité de passage
 
Inscription : mars 2006
Messages : 2
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 2
Points : 1
Points : 1
La solution est ici : http://particletree.com/notebook/pro...-this-keyword/

Probleme.js doit donc avoir cette tête là :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
ProblemClass = Class.create();
 
ProblemClass.prototype = {
 
   initialize: function() {
 
      this.message = 'ceci est un message';
 
      new Ajax.Request( 'probleme.php', {method: 'get', onComplete: this.onCompleteMethode.bindAsEventListener(this)});
 
   },
 
   onCompleteMethode: function(response) {
 
      alert(this.message);
 
   }
 
}
Roger (Bordeaux) 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 18h07.


 
 
 
 
Partenaires

Hébergement Web