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,追赶它实际上会令人困惑,因为调试器只会指向 eval 行在 jQuery 中。多亏了微软,IE 调试器对你来说毫无用处。下次遇到 80020101 错误时,我的建议是:

  1. 查找任何 AJAX 调用并查找额外的逗号。
  2. 查找末尾有额外逗号的任何数组(如花括号中的内容)。
  3. 如果这仍然没有帮助,请查看您使用的技术<!--//-->标记您的 Javascript。在 1.7.2 之前,这一直是 jQuery 的一个已知问题,并且它仍然是 jQuery 团队提交的错误。
  4. 移动到最新版本的 jQuery。
  5. 开始从脚本块中逐个删除内容并慢慢添加项目,直到找到有问题的代码。
于 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 请求添加一个参数,例如ajax=1并在请求中存在ajax -parameter时隐藏 javascript 声明。

我认为这与使用 jsp:include 包含文件没有任何关系,因为浏览器不知道除了你抛出它的 HTML 之外的任何东西。

于 2011-02-07T07:47:21.227 回答
5

我现在用 jQuery(甚至是最新版本)两次遇到这个问题。唯一的解决方案是将所有javascript复制并粘贴到一个大文件中,然后通过 JSLint(jsfiddle.net,首选)运行它。它能够指出我能够修复的几个小错误(包括我的一个数据回调结构中的额外逗号),然后重新复制并粘贴回原来的位置以消除问题。

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);

经过分析,我得到了searchTextFieldid 并且在使用它之前我必须得到它的值

所以我把它改成:

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

它工作正常。

IE 检测到它真的很酷,但微软可能会增强浏览器以显示特定原因的特定错误,因为如果相同的代码在其他浏览器中工作,这是非常令人沮丧的

于 2015-03-25T05:34:12.307 回答
1

在我的情况下,问题是错误函数末尾的 Ajax POST 中额外的无用昏迷:

$.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

我在使用 jQuery 1.10.2 时遇到了这个错误,并且正在加载一个不存在的文件。

所以要确保你尝试加载的文件是正确的,否则IE8会抛出80020101错误。

于 2014-02-26T13:14:58.210 回答
0

使用 jquery 时因其他问题而出现此错误。

更改 $(document).ready(function(){}) ; TO $(window).load(function(){});

于 2013-03-12T08:03:56.590 回答
0

您是否有机会包含 js 文件?

因为

错误 80020101 表示 IE 无法编译您的脚本。

于 2011-02-07T07:50:02.827 回答
0

想分享我的经验。就我而言,它与javascript无关。这是因为同事的 HTML 中的这一行使用了 angular:

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

我记得有一个空的 src 通常是一件坏事。我填充了 src 字段,错误消失了。

于 2013-06-24T18:49:54.827 回答
0

我的问题是由以下原因引起的:

var a = b = c = true;

转向

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

现在它工作正常!

再见马

于 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 回答