27 votes

Impossible de terminer l'opération en raison de l'erreur 80020101. IE

Duplicata possible :
Problème de demande Ajax : erreur 80020101

J'utilise JQuery-1.64 et voici mon code pour réinitialiser la minuterie

var message="Logged in";
var myTimeout = setTimeout("timerDone()",1000 * 1440);
function timerDone()
{
    message="Logged out";   
}
function timerReset()
{

    clearTimeout(myTimeout);
    myTimeout = setTimeout("timerDone()", 1000 * 1440);
}

Mais cela me donne une erreur, uniquement dans IE, lorsque j'essaie de faire clearTimeout. Une idée ????

29voto

Asif Alamgir Points 351

Je ne sais pas pourquoi mais ça a marché pour moi. Si vous avez des commentaires comme

//Comment

Ensuite, il donne cette erreur. Pour corriger cela, faites

/*Comment*/

Ça n'a pas de sens, mais ça a marché pour moi.

28voto

Eric J. Points 73338

L'erreur 80020101 signifie simplement qu'une erreur s'est produite lors de l'évaluation du JavaScript. Si vous chargez ce JavaScript via Ajax, le processus d'évaluation est particulièrement strict.

Parfois, le fait d'enlever // va résoudre le problème, mais l'inverse n'est pas vrai... le problème n'est pas toujours causé par // .

Regardez le JavaScript exact renvoyé par votre appel Ajax et recherchez tout problème dans ce script. Pour plus de détails, voir un excellent article ici

http://mattwhite.me/blog/2010/4/21/tracking-down-error-80020101-in-internet-exploder.html

5voto

Chris Brickhouse Points 528

Enveloppez votre bloc de code entier dans ceci :

//<![CDATA[

//code here

//]]>

Assurez-vous également de spécifier le type de script comme étant text/javascript.

Essayez cela et faites-moi savoir comment ça se passe

2voto

Slava Points 590

Désactivez la vue de compatibilité si vous utilisez IE9.

0voto

Crayon Violent Points 16544

Quand appelez-vous timerReset() ? Peut-être obtenez-vous cette erreur en essayant de l'appeler après que setTimeout() ait déjà fait son travail ?

l'emballer

if (window.myTimeout) { 
  clearTimeout(myTimeout);
  myTimeout = setTimeout("timerDone()", 1000 * 1440);
}

edit : En fait, après réflexion, puisque vous avez mentionné jQuery (et pourtant vous n'avez pas de code jQuery ici)... Je me demande si vous l'avez imbriqué dans un jQuery (comme à l'intérieur d'un $(document).ready(.. et c'est une question de portée variable. Si c'est le cas, essayez ceci :

window.message="Logged in";
window.myTimeout = setTimeout("timerDone()",1000 * 1440);
function timerDone()
{
    window.message="Logged out";   
}
function timerReset()
{

    clearTimeout(window.myTimeout);
    window.myTimeout = setTimeout("timerDone()", 1000 * 1440);
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X