Поймать исключения в JQuery - PullRequest
       25

Поймать исключения в JQuery

7 голосов
/ 26 января 2009

У меня есть следующий код:

<script type="text/javascript">
    $(document).ready(function() {

        $("#Save").click(function() {

            $.post("url", {
                "data": "data"
            }, function(data) {
                alert(data);
            });

        });

    });
</script>

Я тестирую этот скрипт, и один из тестов, который я выполняю, я просто закрываю сервер веб-разработки asp.net и нажимаю кнопку.

IE сообщает об ошибке «отказано в доступе», я хочу перехватить любую ошибку, которая возникает здесь, и в этом случае показать пользователю дружественное сообщение.

Я пытаюсь использовать try / catch, но не сработало ...

Любая подсказка?

Ответы [ 4 ]

14 голосов
/ 26 января 2009

Вместо этого используйте метод $.ajax(). У него есть крюк для ошибок.

Например :

$.ajax({
    url: 'document.xml',
    type: 'GET',
    dataType: 'xml',
    timeout: 1000,
    error: function(){
        alert('Error loading XML document');
    },
    success: function(xml){
        // do something with xml
    }
});
7 голосов
/ 26 января 2009

Это полезный фрагмент для отслеживания любых ошибок jquery ajax в сочетании с FireBug .

// Displays any ajax errors in the Firebug console instead of hiding them
$(document).ajaxError(function(){
    if (window.console && window.console.error) {
        console.error(arguments);
    }
});

Если вы используете Ajax с jQuery, вы могли заметить, что вы не получаете никаких сообщений об ошибках, когда что-то идет не так. Даже если у вас есть серьезные ошибки в функциях обратного вызова, jQuery просто молча завершается сбоем, скрывая любые ошибки под ковриком и оставляя вас в неведении относительно того, что только что произошло.

После запуска этого кода вы начнете получать сообщения об ошибках в консоли Firebug (если что-то не работает с вашими Ajax-вызовами или обратными вызовами). Сообщения об ошибках не самые большие, но, по крайней мере, вам больше не нужно оставаться в темноте.

Кредит достается Джесси Скиннеру

2 голосов
/ 11 сентября 2009

хорошо, я думаю, наконец, поддержка javascript, как это

try{
     main code...
}catch(err){
     error ocurred...
}finally{
     do this anyway...
}
0 голосов
/ 21 апреля 2009

оберните весь свой js-код следующим образом:

           try
           {
       ... js code 
              }
         catch(err)
        {
         alert(err.toString()); 
        }

Но для вызовов ajax это, вероятно, не работает.

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