Ajax-вызов jquery, приводящий к неопределенной ошибке в Firefox - PullRequest
2 голосов
/ 22 марта 2010

Последние несколько часов я вырывал свои волосы из-за этой проблемы.И поиск в Google был затруднен самой неопределенностью этого.Итак, позвольте мне сначала извиниться за это.

В основном я использую 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 голосов
/ 15 апреля 2010

Вы установили кодировку в utf-8?Может ли ключевое слово, которое вызывает большое всплывающее окно, быть тем, что серверная сторона не понимает?

Эта статья о JSON / Ajax / UTF-8, использующей PHP, но прочитала: http://particletree.com/notebook/json-ajax-and-utf8/

0 голосов
/ 23 июля 2010

После небольшого копания это кажется проблемой.

Bugzilla

0 голосов
/ 22 марта 2010

Поскольку он работает с небольшими наборами данных и не работает с большими наборами данных, вам необходимо изолировать сбойный случай с большим набором данных.

Используйте вкладку Net в 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 
}

ОБНОВЛЕНИЕ: подпись вашего обработчика ошибок неверна. Обновил мой образец.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...