36

可能重复:
Ajax 请求问题:错误 80020101

我正在使用 JQuery-1.64,这是我重置计时器的代码

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


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

但是,当我尝试执行 clearTimeout 时,它只会在 IE 中给我一个错误。任何想法????

4

5 回答 5

37

我不知道为什么,但它对我有用。如果你有类似的评论

//Comment

然后它给出了这个错误。要解决这个问题

/*Comment*/

没有意义,但它对我有用。

于 2012-07-09T17:11:27.573 回答
33

所有错误 80020101 意味着在评估 JavaScript 时出现了某种错误。如果您通过 Ajax 加载该 JavaScript,则评估过程特别严格。

有时删除//会解决问题,但反之则不然……问题并不总是由//引起的。

查看 Ajax 调用返回的确切 JavaScript 并查找该脚本中的任何问题。有关更多详细信息,请参阅此处的精彩文章

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

于 2012-08-05T19:54:03.010 回答
5

将您的整个代码块包装在此:

//<![CDATA[

//code here

//]]>

还要确保将脚本类型指定为 text/javascript

试试看,让我知道结果如何

于 2012-06-07T14:22:45.073 回答
2

如果您使用 IE9,请关闭兼容性视图。

于 2012-07-24T13:05:55.467 回答
0

你什么时候调用 timerReset()?在 setTimeout() 已经完成它的事情之后尝试调用它时,也许你会得到那个错误?

把它包起来

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

编辑:实际上,经过进一步思考,因为您确实提到了 jQuery(但这里没有任何实际的 jQuery 代码......我想知道您是否将它嵌套在一些 jQuery 中(比如在 a 中$(document).ready(..,这是一个变量范围的问题. 如果是这样,试试这个:

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);
}
于 2012-06-05T19:57:05.840 回答