从请求返回字符串时出现错误错误 80020101 的 ajax 问题

Posted

技术标签:

【中文标题】从请求返回字符串时出现错误错误 80020101 的 ajax 问题【英文标题】:ajax issue with error error 80020101 when returning a string from request 【发布时间】:2012-07-16 12:17:31 【问题描述】:

我在执行代码时收到以下错误:Microsoft JScript 运行时错误:由于错误 80020101 无法完成操作。

以下链接是我在 *** 上找到的内容: Ajax request problem: error 80020101

var div = $("<div class='modal'>").html($(result.getWebFormDesignFieldContentsResult));

传入的信息result.getWebFormDesignFieldContentsResult是一长串HTML和javascript,还没有解析成DOM。我只是觉得这很奇怪,因为前几天我让它工作,然后试图添加额外的功能......打破它。 :(

传入的字符串相当大,但类似于:

<div>input tags for filtering</div>
<select><option></option>...[150 option tags]... </select>
<anchor tag to return contents>
<script type = "text/javascript">
  ...stuff fires related to the above items...
</script>

我认为将作为字符串传递的信息放入 div 标签中存在问题,因为它可能不像脚本标签。

有没有其他人做到这一点,或者给我一些关于如何处理这个问题的指示?我可能想做一个字符串对象,然后相应地分解内容,只把html放在html中,然后以不同的样式处理js。

结果字符串 (result.getWebFormDesignFieldContentsResult)

您也可以访问这里: http://jsfiddle.net/3kFv2/

            <table style='width:inherit;'>
                <tr>
                    <td>
                        <input type='text' id ='queryInput' onkeypress = 'clearTimeout(timerVar); timerVar = setTimeout(function() fetchFieldInfo($("#queryInput").val()); ,1000);' />
                    </td>
                    <td style = 'text-align:right;'>
                        <a class = 'modalButton' id = 'queryButton' runat='server' value = 'Re-Filter' onCLick = '$("div.modal").fadeOut(); fetchFieldInfo($("#queryInput").val());'>Re-Filter</a>
                    </td>
                </tr>
                <tr>
                    <td colspan='2' style='margin-left:auto; margin-right:auto; text-align:center;'><select size = '20' id = 'selectList' name = 'selectList' ><option value = '1000'>Abutment Notes</option><option value = '2300'>Abutments Notes</option><option value = '2302'>Abutments Notes Maint Need</option><option value = '2301'>Abutments Notes Remarks</option><option value = '10942'>Concrete Deterioration Maint Need</option></select></td>
                <td>
                    <div style='width:300px;height:300px;' id = 'modalInfoPanel'>
                    </div>
                </td>
            </tr>
            <tr>
                <td></td>
                <td style='text-align:right;'>
                    <a class = 'modalButton' id = 'buttonReturnValue' value = 'Return Selected Element' onClick='$("div.modal, div.overlay").fadeOut();'>Return Selected Element</a>
                </td>
            </tr>
        </table>
        <script type = 'text/javascript'>
            function ajaxDisplayContents(value)
                //alert(value.val());
 /*
                $('#selectList option').each(function()
                    return $(this).val() == '';
                ).attr('selected','selected');
 */
                $.ajax(
                    type: 'POST',
                    url: WEBSERVICE_URL + '/fetchFieldInfo',
                    dataType: 'json',
                    contentType: 'application/json',
                    data: JSON.stringify('fe_id': value.val().toString()),
                    success: function(result, textStatus, jqXHR)
                        $('#modalInfoPanel').html(result.fetchFieldInfoResult);
                    ,
                    error: function(xhr, status, message)
                        $('#modalInfoPanel').html(status + ' ' + message);
                    
                );
            
            $('select#selectList').change(function()
                ajaxDisplayContents($(this));
            );


            $(function()
                $('ul li').click(function() clicker(this); );
            );
            function clicker(x)
                if($(x).next().is('li') || $(x).next().length == 0)
                    $.ajax(
                        type: 'POST',
                        url:,
                        dataType: 'json',
                        contentType: 'application/json',
                        data: JSON.stringify(),
                        success: function(result)
                            $(x).after($('<ul>').append($(result['METHODResult']));
                            $(x).next().find('li').click(function() clicker(this); );
                        ,
                        error: function()
                            alert('failed to fetch');
                        
                    );
                else if($(x).next().is('ul'))
                    $(x).next().slideUp(function() $(this).remove(); );
                
            
        </script>

【问题讨论】:

如果你有一个 HTML 字符串,你可以直接将它传递给.html() 函数,你不必先将它包装在一个 jQuery 对象中。 是的,我知道。我把它放在那里,我原来的方式和你说的完全一样。我只是在检查它是否有问题。 我们能看到更多代码吗?查看您如何进行 AJAX 调用等会很有用。还包括来自 AJAX 响应的完整 &lt;script&gt; 标记。 等待代码编辑。 我把所有的字符串都放到了 HTML 中,并没有把它分开,因为这就是 jquery 要做的,用 jquery 的 .html() 函数 【参考方案1】:

我得到了同样的错误 80020101。

然后在逐行检查代码时,我意识到我错误地添加了两次:&lt;script&lt;script&gt;

一旦我删除了这些,错误就消失了。

因此,请仔细检查所有代码,尤其是打开未正确关闭的标签。

【讨论】:

你好像忘了一两个字……“我不小心添加了(两次,这是不需要的)……”你添加了什么?【参考方案2】:

正在查看:http://mattwhite.me/blog/2010/4/21/tracking-down-error-80020101-in-internet-exploder.html 告诉你,虽然有嵌入脚本标签之类的错误......在根,错误只是说明“有一个错误”。

在牢记这些信息之后,我深入研究了我的代码,通过在这里和那里注释掉一些片段来发现越来越多的问题。我发现的错误是 clicker() ajax 调用。我看了一会儿,意识到原来的 ajax 调用被注释掉了。这是对未实现的 web 服务的新调用并且有错误。由于我已将其注释掉,它再次正常工作,我只需为该 ajax 调用正确定义所有内容,一切都会好起来的。

感谢大家帮助调试。 :)

【讨论】:

【参考方案3】:

在我的情况下,问题是位于某些注释行末尾的特殊字符(重音)。

当这些字符接近注释行的末尾时,Internet Explorer 会删除其中的一些(包括换行符)并中断 JavaScript 代码。

// This comment line could fail because it has an accent at the end aeíou
alert("This line probably doesn't work in IE");

IE 会将这一行理解为:

// This comment line could fail because it has an accent at the end **aealert**("This line probably doesn't work in IE");

希望对你有帮助。

【讨论】:

以上是关于从请求返回字符串时出现错误错误 80020101 的 ajax 问题的主要内容,如果未能解决你的问题,请参考以下文章

从 Discord API 请求令牌时出现 400 错误

使用 Auth Headers 发送 axios get 请求时出现 401 错误

为啥从浏览器上传到 S3 时出现 403 错误?

C# HttpWebRequest POST => !!处理请求时出现意外错误:无效的 %-encoding

从 React 向 Django 发送 post 请求时出现 400(错误请求)

从子域向域发送 POST 请求时出现错误 419