22

jspページを返すリクエストがあります。しかし、実際には、jspにはjsp:includeが含まれており(別のjspファイルを呼び出します)、つまりエラー80020101が発生します。

何か案は?

ありがとう

4

14 に答える 14

34

jQueryからAJAX呼び出しを行っていて、次のように配列の最後に余分なコンマを渡した場合にも、このエラーが発生する可能性があります。

$.post('http://example.com/example1/',{
  field1:sField1,
  field2:sField2,
  field3:sField3,
  field4:sField4,
  field5:sField5,
},function(sData){
  if (console) { console.log(sData); }
});

sField5の後にそのコンマが表示されますか?これが構文エラーです。IE以外のブラウザは気にしません。IEはあいまいな80020101エラー(「Javascriptを評価できません-構文エラーがあります」を意味します)をスローし、デバッガーが評価行を指すだけなので、jQueryを使用している場合はそれを追いかけるのは事実上困惑しますjQueryで。Microsoftのおかげで、IEデバッガーはこれを追跡するのに役に立ちません。次回80020101エラーが発生したときの私の提案は、次のとおりです。

  1. AJAX呼び出しを探し、余分なコンマを探します。
  2. 最後に余分なコンマがある配列(中括弧内のものなど)を探します。
  3. それでも問題が解決しない場合は、使用している手法を<!--確認//-->し、Javascriptをマークしてください。これは1.7.2までのjQueryの既知の問題であり、jQueryチームに提出されたバグです。
  4. jQueryの最新バージョンに移動します。
  5. スクリプトブロックから1つずつ削除し、問題のあるコードが見つかるまでゆっくりと追加していきます。
于 2012-04-23T05:37:39.053 に答える
8

src-attributeを使用してスクリプトをインポートするjavascript宣言を削除します。本当に必要な場合は、javascript-fileをinline-javascriptに変更してください。

ソース: http: //bytes.com/topic/javascript/answers/750333-ie-syntax-error-80020101-undefined-array

最も簡単な方法は、 ajax = 1などのパラメーターをAJAXリクエストに追加し、ajaxパラメーターが存在する場合はjavascript宣言を非表示にすることです。

ブラウザは、スローするHTML以外の情報を認識しないため、これはjsp:includeにファイルを含めることとは何の関係もないと思います。

于 2011-02-07T07:47:21.227 に答える
5

私は今、jQuery(最新バージョンでも)でこの問題に2回遭遇しました。唯一の解決策は、すべてのJavaScriptをコピーして1つの大きなファイルに貼り付け、JSLint(jsfiddle.net、推奨)を介して実行することです。いくつかの小さなエラー(データコールバック構造の1つに余分なコンマが含まれているなど)を指摘し、修正してから再コピーして元の場所に貼り付け、問題を解消することができました。

http://jsfiddle.net/devlshone/QKxup/3/

于 2012-04-27T18:15:48.243 に答える
5

同じエラーが発生しましたが、私の場合は予約語がありました'class'。これを明確にするためのコードスニペットを次に示します。

function foo(ajaxResponse){
  $(elem).attr('class', ajaxResponse.class);
}

私はこれを次のように書き直しました:

$(elem).attr('class', ajaxResponse['class']);

これがお役に立てば幸いです。

于 2012-12-05T12:08:22.417 に答える
4

私の場合、JSコードに次のようなHTMLコメントがあることがわかりました。

<script type="text/javascript">
<!-- Unexpected Comment -->
//code...
</script>

交換<!-- -->/* */て動作しました。それが誰かを助けることを願っています。

于 2012-11-14T06:53:28.020 に答える
1

私はこの問題に遭遇しましたが、IEのエラーメッセージはあまり役に立ちませんでした。そこで、Mozilla Firefoxで自分のサイトにアクセスしたところ、Firefoxは問題のあるコードの正確な行を特定することができました。ハイテク修正ではありませんが、この問題のデバッグにIEのみを使用している場合は、サイトをFFにロードして(Firebug拡張機能がインストールされている)、コンソール出力を確認してみてください。

于 2014-12-26T16:33:28.263 に答える
1

私もこの問題に遭遇しましたが、スクリプトファイルを詳しく調べた後、他のブラウザでスムーズに実行される小さな間違いを犯したことがわかりましたが、IEはそれを選択してエラーを表示します:

私の以前のコードは次のとおりです。

var autocomplete = new google.maps.places.Autocomplete(searchTextField ,options);

分析した後、私はそれsearchTextFieldがidであり、それを使用する前にその値を取得する必要があります

だから私はそれを次のように変更します:

var input = document.getElementById('searchTextField');
var autocomplete = new google.maps.places.Autocomplete(input,options);

そしてそれはうまくいきます。

IEがそれを検出するのは本当に素晴らしいことですが、同じコードが他のブラウザーで機能する場合は非常にイライラするため、Microsoftは特定の原因に対して特定のエラーを表示するようにブラウザーを拡張する可能性があります

于 2015-03-25T05:34:12.307 に答える
1

私の場合、問題はエラー関数の最後にあるAjaxPOSTの追加の役に立たないコマでした。

$.ajax({
     type: 'POST',
     dataType: 'text',
     url: '../Client/GetName',
     data: { ClientId: id},
     success: function (respone) {
                alert(respone);
     },
     error: function (xhr, ajaxOptions, thrownError) {
                alert(xhr.statusText);
     }, //<- look here, this guy complicated my simple programmer life
 });

それを削除した後、すべてが正常に動作します。

于 2016-02-23T12:23:28.097 に答える
0

万が一、jsファイルを含めていますか?

なぜなら

エラー80020101は、IEがスクリプトをコンパイルできないことを意味します。

于 2011-02-07T07:50:02.827 に答える
0

jqueryの使用中に、別の問題でこのエラーが発生しました。

$(document).ready(function(){})を変更 します; TO $(window).load(function(){});

于 2013-03-12T08:03:56.590 に答える
0

私の経験を共有したかった。私の場合、それはjavascriptとは何の関係もありませんでした。これは、Angularを使用する同僚のHTMLのこの行が原因でした。

 <img data-ng-model="previewImage" src="" data-ng-src="{{imageURL}}" alt="" ></img>

空のsrcを持つことは通常悪いことであることを思い出しました。srcフィールドにデータを入力すると、エラーはなくなりました。

于 2013-06-24T18:49:54.827 に答える
0

jQuery 1.10.2を使用していて、存在しないファイルをロードしているときにこのエラーが発生しました。

したがって、ロードしようとしているファイルが正しいことを確認してください。そうでない場合、IE8は80020101エラーをスローする可能性があります。

于 2014-02-26T13:14:58.210 に答える
0

私の問題の原因は次のとおりです。

var a = b = c = true;

になった

var a = true;
var b = true;
var c = true;

今では正常に動作します!

さようならMA

于 2014-03-31T15:36:23.150 に答える
0

変数宣言の前に「var」を付けるのを忘れていたので、問題は解決しました。

<script>
    uploadDocument = "Some message";
</script>

私はそれを修正しました:

var uploadDocument = "Some message";

根本的な原因は、同じID「uploadDocument」の要素がフォームにあるため、上記の宣言によりhtmlの形式が正しくないことでした。

于 2015-10-08T06:10:43.083 に答える