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の評価中に何らかのエラーが発生したことを意味します。そのJavaScriptをAjax経由でロードする場合、評価プロセスは特に厳密です。

//を削除すると問題が解決する場合がありますが、その逆は当てはまりません...問題の原因が常に//であるとは限りません。

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 に答える