Bonjour, je débute en AJAX et j'ai un souci avec mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
 
var Game = {
	v: '0.1a',
 
	launch: function(can) {
		document.title += ' version '+this.v;
		this.json.request(this.map.load, 'pulau.json');
		this.map.draw(can);
	},
 
	map: {
		n: '',
		t: new Array(),
		c: new Array(),
 
		load: function(d) {
			this.n = d.n;
			var t = new Array();
			var i;
			for(i = 0; i < d.t.length; i++) {
				t[i] = new Image();
				t[i].src = d.t[i];
			}
			this.t = t;
			this.c = d.c;
		},
		draw: function(can) {
			alert(this.c[1][4]);
		}
	},
 
	json: {
		getXHR: function() {
			var r = null;
			try {
				r = new XMLHttpRequest();
			}
			catch(e) {
				if(window.ActiveXObject) {
					try {
						r = new ActiveXObject('Msxml2.XMLHTTP');
					}
					catch(e2) {
						r = new ActiveXObject('Microsoft.XMLHTTP');
					}
				}
			}
			return r;
		},
		request: function(callback, f) {
			var r = this.getXHR();
			r.onreadystatechange = function() {
				if (r.readyState == 4 && (r.status == 200 || r.status === 0)) {
					if(JSON) {
						callback(JSON.parse(r.responseText));
					}
					else{
						callback(eval('('+r.responseText+')'));
					}
				}
			};
			r.open('GET', f, true);
			r.send(null);
		},
	}
};
Le souci est:
Lorsque Game.map.load() est appellé, les modifications des variables ne s'effectuent pas réellement. Ce qui fait que lorsque j'essaye d'utiliser les valeurs ensuite dans Game.map.draw(), les valeurs sont encore initialisées comme au début.

J'attends donc une réponse à ma question:
Pourquoi ? Pourquoi les valeurs de n, t et c ne sont pas modifiées correctement dans Game.map.load() ? Cela doit être du au callback, mais je ne comprend pas...

Merci BEAUCOUP d'avance, j'attends votre réponse

Ce qui fait que le changement de valeur de this.c n'est pas