Onreadystatechange et this....

Signaler
Messages postés
33
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
2 décembre 2009
-
Messages postés
33
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
2 décembre 2009
-
bonjour à tous

jai une petite question pour vous... j'ai créer une classe Ajax qui est et dans cette classe j'utilise onreadystatechange avec une fonction pour gerer les changement malheureusement je ne comprend pas pourquoi je ne peut pas utiliser le "this" dans  cette fonction...

function Ajax() {
.....
ceci =this;
        this.xmlHttp.onreadystatechange=function(){
            var readyState = ceci.xmlHttp.readyState;
           
            if (readyState==4 || readyState=="complete")
            {
                $(ceci.target).innerHTML=ceci.xmlHttp.responseText;
            } };

...

}

pourquoi sui-je obliger de sauver this dans une variable avant de l'utiliser??

16 réponses

Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
bonjour,
this c'est l'objet sur "lequel" on est"
dans une fonction, c'est... la fonction elle même
Cordialement[mon Site][M'écrire]Bul
Messages postés
202
Date d'inscription
vendredi 27 janvier 2006
Statut
Membre
Dernière intervention
29 janvier 2019

NON. This désigne l'objet dont on exécute la méthode.

Les fonctions isolées dans Javascript sont des méthodes ajoutées à l'objet document (dans ce cas this sera généralement le document).

Cependant pour les évènements AJAX, this sera l'objet dans lequel la requête XHTTP a été créée et un objet XHTTP est normalement créé indépendamment du document. Du coup pour accéder au document il faut en sauvegarder une référence.

Bref la variable "ceci" devrait plutôt être appelée "document" dans le code ci-dessus. Mais elle est même inutile puisque un objet XHTTP a un champ dédié pour ça: "target", qu'on peut renseigner avec la référence au document, ou à un de ses éléments.

function Ajax() {
.....
xmlHttp.target = document;
xmlHttp.onreadystatechange = function() {
var readyState = this.readyState;
if (readyState 4 || readyState "complete") {
var element = this.target.getElementById('Xyz');
element.innerHTML = this.responseText;
}
};
...
}

ou

function Ajax() {
.....
xmlHttp.target = document.getElementById('Xyz');
xmlHttp.onreadystatechange = function() {
var readyState = this.readyState;
if (readyState 4 || readyState "complete") {
var element = this.target;
element.innerHTML = this.responseText;
}
};
...
}
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
ça fait 2 fois que tu interviens sur de vieux sujets
une question ? tu testes ce que tu avances ?
car ici aussi, esaye, ça ne marche pas !
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
il fallait lire :
car ici non plus, essaye, ça ne marche pas !
Messages postés
33
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
2 décembre 2009

oui surtout apres 9 mois... je pense avoir résolut mon problème tu sais...
Messages postés
202
Date d'inscription
vendredi 27 janvier 2006
Statut
Membre
Dernière intervention
29 janvier 2019

Arrêtez les questions de date, d'une part il était en haut de liste (je n'ai pas cherché longtemps les historiques), et le sujet était resté ouvert (personne n'avait répondu, et l'auteur non plus)
Messages postés
202
Date d'inscription
vendredi 27 janvier 2006
Statut
Membre
Dernière intervention
29 janvier 2019

Dis donc BUL, tu joues les redresseurs, pour te croire obligé de surveiller tout ce qui se passe ici, pour critiquer dans la minute, histoire de faire fuir ceux qui viennent de temps en temps?
Je ne vois pas ce que j'ai écrit qui est incorrect. En revanche j'ai corrigé l'expression fausse "l'objet sur lequel on est" qui ne veut strictement rien dire et est encore plus ambigu que la question posée.
Messages postés
202
Date d'inscription
vendredi 27 janvier 2006
Statut
Membre
Dernière intervention
29 janvier 2019

Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
je ne surveille rien du tout
c'est toi qui interviens sur des sujets
qui datent, qui plus est pour raconter
n'importe quoi ( mais ce doit être la faute
de IE, c'est sûr !! ;)))
Messages postés
202
Date d'inscription
vendredi 27 janvier 2006
Statut
Membre
Dernière intervention
29 janvier 2019

Tu fais ch... avec tes "n'importe quoi". Franchement si ta seule intervention c'est pour polémiquer, on n'a pas besoin de toi ici. Tes interventions et commentaires sont hors sujet, et ce site n'est pas TON site où tu peux jouer les censeurs et redresseurs de tords.

(Et pourquoi tu m'écris directement? J'avais supprimé ce sujet de ma liste de suivi. Tu abuses).
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
je ne t'ai pas écris directement !
la preuve, c'est ici que tu réponds.
si tu ne veux plus que j'intervienne, ne
viens pas dire de &€§!$€$ sur de vieux
messages résolus, fais des essais avant.
Messages postés
33
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
2 décembre 2009

bon... vous avez fini votre prise de bec... sa commence a bien faire la!!!
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
certes, certes... je comprend que cela t'agace
mais, mon foie, tu en es un peu responsable, non ?
tu aurais pu avoir la correction de dire que
c'était résolu, même sans révéler comment !!!!
et tu peux éviter de recevoir des messages
suite aux nouvelles interventions, suffit
de décocher ce qui convient !
Messages postés
202
Date d'inscription
vendredi 27 janvier 2006
Statut
Membre
Dernière intervention
29 janvier 2019

Non, justement, les cases sont toutes décochées chez moi. Même pour ce message pour lequel je continue ENCORE à recevoir des alertes emails.

Ce site est bogué et ne respecte pas ce qu'on dit.
Je l'inscris donc comme spammeur maintenant.
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
allons, une dernière réponse et... plonk.
après avoir affirmé que IE était bogué,
voilà que ce site le serait aussi ?
même s'ils avaient quelques défauts,
je ne pense pas que tu sois le plus
qualifié pour porter le moindre jugement
sur quoi que ce soit ;o)))
un mauvais ouvrier rejette toujours
ses fautes sur ses outils, d'après
lui, ce serait eux qui seraient mauvais.
déjà, il faudrait que tu apprennes à lire,
c'est expliqué dans chaque mail envoyé ;o)
Messages postés
33
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
2 décembre 2009

la je dit braveau!!

et franchement je pense que ce site est une des plus grandes référances du web niveau programation... et bon même si ce site a des petit defeault minime il est bien mieu que bien des autres et franchement si tu en a marre de ce forum et des email ou de tout autre chose sur se forum rien ne t'empeche de te désinscrire et de nous dire byebye...