Ajax请求问题:错误80020101

Ali*_*Ali 22 ajax internet-explorer jsp jspinclude

我有一个返回jsp页面的请求.但事实是,jsp包含jsp:include in(它在其中调用另一个jsp文件),即给出错误80020101.

有任何想法吗?

谢谢

Vol*_*ike 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); }
});
Run Code Online (Sandbox Code Playgroud)

在sField5之后看到逗号?那是语法错误.没有其他浏览器会关心IE.IE将抛出模糊的80020101错误(这意味着"无法评估你的Javascript - 你有一个语法错误")如果你使用jQuery,它将实际上莫名其妙地追逐它,因为调试器只会指向eval行在jQuery中.感谢Microsoft,IE调试器对你来说是没用的.下次出现80020101错误时,我的建议如下:

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

  • 简单地更新jQuery足以解决这个问题. (2认同)

hei*_*kim 8

删除使用src-attribute导入脚本的javascript声明.如果你真的需要它,你可以将你的javascript文件更改为inline-javascript.

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

最简单的方法是在AJAX请求中添加一个参数,例如ajax = 1,并在请求中存在ajax -parameter 时隐藏javascript声明.

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


Dev*_*One 5

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

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


小智 5

我有同样的错误,但在我的情况下,有一个保留字'class'.以下是一段清晰明了的代码片段:

function foo(ajaxResponse){
  $(elem).attr('class', ajaxResponse.class);
}
Run Code Online (Sandbox Code Playgroud)

我把它重写为:

$(elem).attr('class', ajaxResponse['class']);
Run Code Online (Sandbox Code Playgroud)

希望这有用.