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

时间:2012-07-17 14:33:43

标签: jquery asp.net html ajax

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

以下链接是我在Stackoverflow上找到的内容: 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>

3 个答案:

答案 0 :(得分:4)

我收到了同样的错误80020101。

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

删除这些后,错误就消失了。

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

答案 1 :(得分:3)

观察:http://mattwhite.me/blog/2010/4/21/tracking-down-error-80020101-in-internet-exploder.html 告诉你,虽然根目录中存在嵌入式脚本标记等错误,但错误只是声明“存在错误”。

在把这些信息铭记于心之后,我深入研究了我的代码,通过在这里和那里评论出来找到越来越多的问题。我发现的错误是clicker()ajax调用。我看了一会儿,发现原来的ajax电话被注释掉了。这是对未实现且有错误的Web服务的新调用。因为我评论它,它再次正常工作,我只需要为ajax调用正确定义所有内容,一切都会很好。

感谢大家帮助调试。 :)

答案 2 :(得分:0)

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

当这些字符接近注释行的末尾时,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");

我希望它可以帮到你。