[AJAX] XHR, JSON, callback
Bonjour, je débute en AJAX et j'ai un souci avec mon code:
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 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 :ccool:
Ce qui fait que le changement de valeur de this.c n'est pas