2011-02-07 217 views
20

我有一个请求返回一个jsp页面。但事实是,jsp包含了jsp:include(它调用了另一个jsp文件),即给出了错误80020101.Ajax请求问题:错误80020101

任何想法?

谢谢

回答

8

删除使用src-attribute导入脚本的javascript声明。如果您真的需要它,请将您的javascript文件更改为内嵌JavaScript。

来源:http://bytes.com/topic/javascript/answers/750333-ie-syntax-error-80020101-undefined-array

最简单的方法将是一个参数添加到您的AJAX请求,例如AJAX = 1和隐藏的JavaScript声明时AJAX -parameter存在是请求。

我不认为这与使用jsp包含文件有关:include,因为浏览器不知道除了HTML之外的其他合成。

+0

这是合理的,但是,我们使用的js文件是一个很大的文件,我们无法复制它的一部分。在这个之前,jsp文件被重复使用了很多次,但不是这样。 – Ali 2011-02-07 11:28:13

+0

您是否考虑在做AJAX时隐藏声明? – heikkim 2011-02-08 07:08:54

+0

从带有src属性的脚本标记切换到内嵌JavaScript是*不合理。 – DCShannon 2015-12-09 01:07:20

0

您是否有机会收录js文件?

因为

错误80020101意味着IE isnt't能够编译脚本。

33

您还可以,如果你正在做的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中。 IE调试器对你来说毫无用处,这要归功于微软。下一次你遇到80020101错误,我的建议是:

  1. 寻找任何AJAX调用并寻找额外的逗号。
  2. 寻找任何数组(如花括号中的东西),最后有一个额外的逗号。
  3. 如果这仍然没有帮助,那么看看你使用<!--//-->来标记你的Javascript的技巧。这直到1.7.2才成为jQuery的一个已知问题,它仍然是jQuery团队的一个存档错误。
  4. 移至最新版本的jQuery。
  5. 开始逐个删除脚本块中的东西,并慢慢添加项目,直到找到有问题的代码段。
5

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

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

4

在我来说,我发现,在我的JS代码作为HTML注释:

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

/* */取代<!-- -->和它的工作。 希望它能帮助别人。

5

我有同样的错误,但在我的情况下有一个保留字'class'。 这里的代码片段,以明确这一点:

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

我改写了这个为:

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

希望这是有帮助的。

0

在使用jquery时出现此错误的另一个问题。

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

0

想分享我的经验。在我的情况下,它与JavaScript无关。这是因为这条线在同事的HTML使用角度的:

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

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

0

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

因此,请确保您尝试加载的文件是正确的,否则IE8可能会抛出80020101错误。

0

我的问题的形成原因是:

var a = b = c = true; 

转向

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

现在它工作正常!

再见 MA

1

我就遇到了这个问题,IE浏览器的错误消息不是非常有帮助。所以,我在Mozilla Firefox中访问了我的网站,并且Firefox能够精确确定出现问题的确切代码行。不是一个高科技的修复,但如果你一直只使用IE来调试这个问题,尝试加载您的站点在FF(与Firebug扩展安装)并检查控制台输出。

0

我也遇到了这个问题,但在我的脚本文件采取仔细看后,我发现我做了其他浏览器顺利运行,但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浏览器检测到它,但微软可以提高浏览器来显示具体原因具体的错误,因为这是非常令人沮丧,如果相同的代码在其他浏览器

0

我已经错过了把“变种”的作品变量声明的前面,把它解决了问题。

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

我它固定到:

var uploadDocument = "Some message"; 

根本原因是,我不得不在具有相同id“uploadDocument”形式的元件,因此,上面的声明是造成HTML是畸形

0

在我的情况下,问题是在阿贾克斯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 
}); 

删除后,它一切正常。