Подтвердить что ты не робот

Как обрабатывать ошибку В $.get()

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

Что я делаю:

   $(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);

        });
    });

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

ref: http://www.maheshchari.com/jquery-ajax-error-handling/

4b9b3361

Ответ 1

Использование $.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);
}

Ответ 2

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

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

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

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