【问题标题】:Ajax request problem: error 80020101Ajax请求问题:错误80020101
【发布时间】:2011-06-22 13:59:10
【问题描述】:

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

有什么想法吗?

谢谢

【问题讨论】:

    标签: ajax internet-explorer jsp jspinclude


    【解决方案1】:

    如果您从 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. 开始从脚本块中逐段删除内容,然后慢慢添加项目,直到找到有问题的代码段。

    【讨论】:

    • 只需更新 jQuery 就足以为我解决这个问题。
    • 显然这仍然是 Edge 中的一个问题:我们刚刚有两个用户在我们的网站上遇到了这个问题(都使用相同版本的 Edge):Edge Version: 16.16299; Windows 10 Version: Unknown
    • 直接在控制台执行此操作也可能出现此错误:console.dir(1);
    【解决方案2】:

    删除使用 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 之外的任何东西。

    【讨论】:

    • 这是合理的,但是我们使用的js文件很大,我们不能复制它的一部分。并且jsp文件在这之前被重复使用了很多次,但不是这样。
    • 你在做AJAX的时候考虑过隐藏声明吗?
    • 从带有 src 属性的脚本标签切换到内联 javascript 是不合理的。
    • @DCShannon 嗯,这有点像 IMO 的纯粹观点。并非每一段 javascript 都需要位于不同的文件中,但当然强烈建议这样做。
    • 在个人网站或有两个 javascript 文件的东西上可能是合理的,但在实际的商业网站上这是一个糟糕的想法。尤其是当脚本需要包含在多个页面上时,而不是所有页面上。
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      我遇到了同样的错误,但在我的情况下,有一个保留字 'class'。 这是一个sn-p的代码来说明这一点:

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

      我把它改写为:

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

      希望这对您有所帮助。

      【讨论】:

        【解决方案5】:

        在我的例子中,我发现我的 JS 代码中有一条 HTML 注释:

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

        我用/* */ 替换了&lt;!-- --&gt;,它成功了。 希望它会对某人有所帮助。

        【讨论】:

          【解决方案6】:

          我遇到了这个问题并且 IE 的错误消息不是很有帮助。因此,我在 Mozilla Firefox 中访问了我的网站,而 Firefox 能够查明存在问题的确切代码行。不是高科技修复,但如果您只使用 IE 来调试此问题,请尝试在 FF 中加载您的站点(安装 Firebug 扩展)并检查控制台输出。

          【讨论】:

            【解决方案7】:

            我也遇到了这个问题,但是仔细查看我的脚本文件后,我发现我犯了一个小错误,在其他浏览器上运行顺利,但 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 检测到它真的很酷,但微软可能会增强浏览器以显示特定原因的特定错误,因为如果相同的代码在其他浏览器中工作,这是非常令人沮丧的

            【讨论】:

              【解决方案8】:

              在我的情况下,问题是错误函数末尾的 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
               });
              

              删除后一切正常。

              【讨论】:

                【解决方案9】:

                你有没有机会包含一个 js 文件?

                因为

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

                【讨论】:

                • 是的,我使用了一个 js 文件,但事实是,我在项目的不同位置重用了该代码(jsp 和 js),但它们没有问题。这里的情况是,我使用ajax来请求这里的jsp页面。 ..
                【解决方案10】:

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

                改变 $(document).ready(function(){}); 到 $(window).load(function(){});

                【讨论】:

                  【解决方案11】:

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

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

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

                  【讨论】:

                    【解决方案12】:

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

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

                    【讨论】:

                      【解决方案13】:

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

                      var a = b = c = true;
                      

                      转向

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

                      现在可以正常使用了!

                      再见 马

                      【讨论】:

                        【解决方案14】:

                        我错过了将 'var' 放在变量声明前面,说明它解决了问题。

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

                        我把它改成:

                        var uploadDocument = "Some message";
                        

                        根本原因是我在表单中有一个具有相同 ID“uploadDocument”的元素,因此上述声明导致 html 格式错误

                        【讨论】:

                          猜你喜欢
                          • 2012-07-16
                          • 2021-03-14
                          • 2014-02-18
                          • 2018-07-27
                          • 1970-01-01
                          • 2011-05-01
                          • 1970-01-01
                          • 2014-02-02
                          • 2012-04-06
                          相关资源
                          最近更新 更多