Как обработать ошибку в $ .get () - PullRequest
17 голосов
/ 01 февраля 2010

У меня есть код jquery, в котором я использую get () и вызываю некоторый удаленный URL / файл. Теперь я хочу знать, как лучше всего справляться с ошибками из этого.

Что я делаю, это:

   $(document).ready(function() {
        $.ajaxSetup({
            error: function(x, e) {

                if (x.status == 0) {
                    alert(' Check Your Network.');
                } 
                   else if (x.status == 404) {
                alert('Requested URL not found.');

                } else if (x.status == 500) {
                    alert('Internel Server Error.');
                }  else {
                    alert('Unknow Error.\n' + x.responseText);
                }
            }
        });

        $.get("HTMLPage.htm", function(data) {
            alert(data);
            $('#mydiv').html(data);

        });
    });

Это работает нормально. Но хотите знать, есть ли лучший способ сделать это?

ссылка: http://www.maheshchari.com/jquery-ajax-error-handling/

Ответы [ 3 ]

17 голосов
/ 01 февраля 2010

Использование $ .ajaxSetup является глобальным для всех вызовов ajax. Поскольку у функции $ .get нет обратных вызовов, определение обработчика ошибок в $ .ajaxSetup является единственным способом обработки ошибок. Если вы используете $ .ajax, вы можете определить обработчик ошибок в вызове $ .ajax следующим образом

$.ajax({
  url: "HTMLPage.htm",
  success: function(data) {
    alert(data);
    $('#mydiv').html(data);        
  },
  error: function(XMLHttpRequest, textStatus, errorThrown) { 
    if (XMLHttpRequest.status == 0) {
      alert(' Check Your Network.');
    } else if (XMLHttpRequest.status == 404) {
      alert('Requested URL not found.');
    } else if (XMLHttpRequest.status == 500) {
      alert('Internel Server Error.');
    }  else {
       alert('Unknow Error.\n' + XMLHttpRequest.responseText);
    }     
  }
});

Это относится только к этому вызову ajax, поэтому вы можете получить более конкретные сообщения об ошибках. Но использование глобального обработчика ошибок работает так же хорошо.

Вы можете определить свои функции вне $ (document) .ready () следующим образом

$(document).ready(function() {
    $.ajaxSetup({
        error: AjaxError
    });

    $.get("HTMLPage.htm", GetSuccess);
});

function AjaxError(x, e) {
  if (x.status == 0) {
    alert(' Check Your Network.');
  } else if (x.status == 404) {
    alert('Requested URL not found.');
  } else if (x.status == 500) {
    alert('Internel Server Error.');
  }  else {
     alert('Unknow Error.\n' + x.responseText);
  }
}

function GetSuccess(data) {
  alert(data);
  $('#mydiv').html(data);
}
6 голосов
/ 05 февраля 2018

Начиная с jQuery 1.5, все Ajax-методы jQuery возвращают расширенный набор объекта XMLHTTPRequest. Этот объект jQuery XHR, или «jqXHR», возвращаемый $ .get (), реализует интерфейс Promise, предоставляя ему все свойства, методы и поведение Promise.

var jqxhr = $.get( "example.php", function() {
    alert( "success" );
})
.done(function() {
    alert( "second success" );
})
.fail(function() {
    alert( "error" );
})
.always(function() {
    alert( "finished" );
});
1 голос
/ 04 февраля 2011

копирование / вставка из http://api.jquery.com/jQuery.ajax/:

statusCode (добавлено 1,5) {}Карта числовых HTTP-кодов и функций, вызываемых, когда ответ имеет соответствующий код.Например, при статусе ответа 404 будет выдано следующее:

$.ajax({
  statusCode: {404: function() {
    alert('page not found');
  }
});

Если запрос выполнен успешно, функции кода состояния принимают те же параметры, что и обратный вызов успеха;если это приводит к ошибке, они принимают те же параметры, что и обратный вызов ошибки.

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