J'ai pas regardé en détail ton code mais dans 99.99999% des cas c'est un pb de scope. en clair tu essais d'appeler une méthode d'un objet qui n'existe pas lorsque tu l'appelle.
là on ne sais pas d'où sort ta callback donc pas simple de te répondre.
tu as quelque par un objet obj qui à une méthode
1 2 3 4
| obj ={
member: 12,
test: function (data) {console.log(member + " " + data);}
} |
le principe est le suivant
tu crée l'objet XHR
doc = new XMLHttpRequest(); //attention cette façon de faire ne marche pas sous IE
tu associe à ce XHR l'objet qui devra être utiliser lors de la réponsepuis tu défini les traitement de la réponse. attention j'ai vu que tu utilise doc alors qu'il faut utiliser this
1 2 3 4 5 6 7 8 9 10 11 12 13
| doc.onreadystatechange = function() {
var status;
if (this.readyState == XMLHttpRequest.LOADING || this.readyState == XMLHttpRequest.OPENED){
xmlHttpCurrentlyOccuped = true;
}
if (this.readyState == XMLHttpRequest.DONE && this.status == 200) {
xmlHttpCurrentlyOccuped = false;
var data;
var contentType = this.getResponseHeader("Content-Type");
data = this.responseText;
this.scope.test(data); //ici on accès à l'objet associé à ce XHR this.scope
} |
JS est un langage à objet il faut l'utiliser comme tel.
Je n'ai pas compris pourquoi tu avais une queue ni xmlHttpCurrentlyOccuped
les instance XHR étant indépendantes tu peux leur attacher un membre param
1 2 3 4
| doc.params = {
myMethod : method,
myUrl : url
} |
A+JYT
Partager