我有一个返回jsp页面的请求。但事实是,jsp包含jsp:include in(它在其中调用另一个jsp文件),即给出错误80020101。
有什么想法吗?
由于
答案 0 :(得分: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中。感谢Microsoft,IE调试器对你来说是没用的。下次出现80020101错误时,我的建议是:
<!--
和//-->
标记Javascript的技巧。这是jQuery的一个已知问题,直到1.7.2,它仍然是jQuery团队提交的错误。答案 1 :(得分:8)
删除使用src-attribute导入脚本的javascript声明。如果你真的需要它,你可以将你的javascript文件更改为inline-javascript。
来源: http://bytes.com/topic/javascript/answers/750333-ie-syntax-error-80020101-undefined-array
最简单的方法是向您的AJAX请求添加参数,例如 ajax = 1 ,并在请求时隐藏 ajax - 参数存在时的javascript声明。
我不认为这与使用jsp:include包含文件有任何关系,因为浏览器不知道除了你输入的HTML之外的其他内容。
答案 2 :(得分:5)
我现在遇到过两次jQuery(即使是最新版本)这个问题。唯一的解决方案是将您的javascript的所有复制并粘贴到一个大文件中,然后通过JSLint(jsfiddle.net,首选)运行它。它能够指出我能够修复的几个小错误(包括我的一个数据回调结构中的额外逗号),然后重新复制并粘贴回原来的位置以消除问题。
答案 3 :(得分:5)
我有同样的错误,但在我的情况下,有一个保留字'class'
。
以下是一段清晰明了的代码:
function foo(ajaxResponse){
$(elem).attr('class', ajaxResponse.class);
}
我把它重写为:
$(elem).attr('class', ajaxResponse['class']);
希望这有用。
答案 4 :(得分:4)
在我的案例中,我发现我的JS代码中有一条HTML注释:
<script type="text/javascript">
<!-- Unexpected Comment -->
//code...
</script>
我将<!-- -->
替换为/* */
并且有效。
希望它会帮助别人。
答案 5 :(得分:1)
我遇到了这个问题,IE的错误消息不是很有帮助。所以,我在Mozilla Firefox中访问了我的网站,Firefox能够找到有问题的确切代码行。不是高科技修复,但如果您一直使用IE来调试此问题,请尝试在FF中加载您的站点(安装了Firebug扩展)并检查控制台输出。
答案 6 :(得分: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
});
删除后一切正常。
答案 7 :(得分:0)
你是否有机会包括一个js文件?
因为
错误80020101表示IE无法编译脚本。
答案 8 :(得分:0)
使用jquery时,针对其他问题出现此错误。
更改 的 $(文件)。就绪(函数(){})强>; 至 的 $(窗口).load(函数(){}); 强>
答案 9 :(得分:0)
想要分享我的经验。就我而言,它与javascript无关。这是因为同事的HTML中的这一行使用了角度:
<img data-ng-model="previewImage" src="" data-ng-src="{{imageURL}}" alt="" ></img>
我记得有一个空的src通常是件坏事。我填充了src字段,错误就消失了。
答案 10 :(得分:0)
使用jQuery 1.10.2时我遇到了这个错误,并且正在加载一个不存在的文件。
因此请确保您尝试加载的文件是正确的,否则IE8会抛出80020101错误。
答案 11 :(得分:0)
我的问题是由以下原因造成的:
var a = b = c = true;
转向
var a = true;
var b = true;
var c = true;
现在它运作正常!
再见 MA
答案 12 :(得分: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检测到它真的很酷,但微软可能会增强浏览器以显示特定原因的特定错误,因为如果相同的代码在其他浏览器中工作则非常令人沮丧
答案 13 :(得分:0)
我错过了把'var&#39;在变量声明面前,把它解决了问题。
<script>
uploadDocument = "Some message";
</script>
我把它修改为:
var uploadDocument = "Some message";
根本原因是我在表单中有一个元素具有相同的id&#34; uploadDocument&#34;,因此上述声明导致html格式错误