jquery Ajax调用导致Firefox中的Undefined Error

时间:2010-03-22 10:55:17

标签: c# jquery ajax firefox

这个问题我最近几个小时都在拔头发。谷歌搜索一直受到这种模糊性的阻碍。所以,我先为此道歉。

基本上我使用jquery和ajax(使用C#)从后端返回数据并将其显示在屏幕上。该代码适用于firefox和IE。但是当数据太大(??)(1500+表行)时,我得到的是一个未定义的弹出窗口。

在firefox(3.6)中调试它甚至没有进入成功方法。更糟糕的是它甚至没有进入错误方法。那里有很多多余的信息,但我宁愿展示我正在做的一切。

守则

$j.ajax(
        {
            type: "POST",
            url: "AdminDetails.aspx/LoadCallDetails",
            data: "{" + data + "}",
            contentType: "application/json;charset=utf-8",
            dataType: "json",                
            success: function(msg) {
                $j("#CallDetailsHolder").html(msg.d);
                $j(".pointingHand").hide(); 

                var oTable = $j('#dt').dataTable({
                    "bProcessing": true,
                    "bPaginate": true,
                    "bSort": true,
                    "bAutoWidth": false,
                    "aoColumns": [
                        { "sType": 'html' },
                        { "sType": 'custdate' },
                       { "sType": 'html-numeric' },
                        { "sType": 'ariary' },
                        { "sType": 'html' },
                        { "sType": 'html' }
                    ],
                    "oLanguage": {
                        "sProcessing": "Traitement...",
                        "sLengthMenu": "_MENU_ Montrer",
                        "sZeroRecords": "Aucun enregistrement",
                        "sInfo": "_START_ à _END_ de _TOTAL_",
                        "sInfoEmpty": "0 à 0 de 0",
                        "sInfoFiltered": "(filtrée à partir de _MAX_ )",
                        "sInfoPostFix": "",
                        "sSearch": "Rechercher",
                        "sUrl": "",
                        "oPaginate": {
                            "sFirst": "premier",
                            "sPrevious": "Précédent",
                            "sNext": "suivant",
                            "sLast": "dernier"
                        }
                    },
                    "sDom": 'T<"clear">lfrtip'

                });

                $j('#CompteBlocRight0').unblock();

                $j('#btnRangeSearch').click(function() { oTable.fnDraw(); });

            },
            error: function(msg) {
                DisplayError(msg);
                $j('#CompteBlocRight0').unblock();
            }
        });               //$.ajax 
    }

代码绝对有效。甚至在IE中显示也没有任何问题。

任何帮助???

3 个答案:

答案 0 :(得分:0)

由于它适用于小型数据集,并且无法使用大型数据集,因此您需要将失败的案例与大型数据集隔离开来。

使用Firebug中的“网络”选项卡查看服务器的响应。状态2xx应该进入成功处理程序,所有其他人应该进入错误处理程序。也许你的服务器正在以一种Ajax控件混淆的方式发挥作用?

由于存在这些类型的错误,通常非常有助于简化调试代码。尝试使用此代码,将处理程序替换为简单消息:

$j.ajax(
    {
        type: "POST",
        url: "AdminDetails.aspx/LoadCallDetails",
        data: "{" + data + "}",
        contentType: "application/json;charset=utf-8",
        dataType: "json",                
        success: function(msg) {
            console.log("in success handler");
        },
        error: function(xhr, textStatus, errorThrown) {
            console.log("in error handler: "+textStatus);
            console.dir(xhr);
            console.dir(errorThrown);
        }
    });               //$.ajax 
}

UPDATE:错误处理程序的签名不正确。更新了我的样本。

答案 1 :(得分:0)

你把你的字符集设置为utf-8?触发大弹出窗口的关键字是服务器端无法理解的吗?

本文是关于使用PHP的JSON / Ajax / UTF-8,但请阅读:http://particletree.com/notebook/json-ajax-and-utf8/

答案 2 :(得分:0)

经过一番挖掘,这似乎是个问题。

Bugzilla