2012-07-29 7 views
6

Mam aplikację internetową, wysyłając żądanie i wysyłając dane przez AJAX, a w odpowiedzi moja strona wysyła kody statusu HTTP, w zależności od sytuacji. więc na przykład, jeśli użytkownik próbuje zalogować się podczas logowania, prawdopodobnie zwróci 400 HTTP status code. I w końcu mam do czynienia z alarmem, itp.Jak obsługiwać określony błąd HTTP dla wszystkich wywołań AJAX?

Jednak obsługa tych kodów statusu HTTP staje się zbyt ciężka, ponieważ intensywnie korzystam z AJAX. to oznacza, że ​​będę obsługiwać kod stanu HTTP wielokrotnie przy każdym żądaniu AJAX, co spowoduje skopiowanie kodu i jest to zła praktyka.

Więc co szukam jest sposób, aby obsłużyć wszystkie te błędy w jednym miejscu, więc po prostu obsłużyć wszystkie 400, 401, etc z tym samym kodem.

co mam aktualnie robi:

Handling błędy ręcznie dla każdego wywołania AJAX. Korzystając z statusCode w $.ajax().

statusCode: { 
     500: function(data) { 
      alert('Some friendly error message goes here.'); 
     } 

Wydaje się overkill dla mnie, jak rozwija się moja aplikacja internetowa, a jak utworzyć więcej połączeń AJAX. Powtarzam ten fragment kodu raz za razem.

Obecnie jedynym pomysł mam w głowie jest stworzenie funkcji, która będzie działać na szczycie AJAX, coś jak:

function doAjax(type,url, data, moreVars) { 
//this function is just a SIMPLE example, could be more complex and flexible. 
     $.ajax({ 
      type: type, 
      url: url, 
      data: data, 
      moreOptions:moreVars, 
      //now handling all status code. 
      statusCode: { 
       //handle all HTTP errors from one place. 
      } 
     }); 
    } 

    doAjax("POST", 'mydomain.com/login.php', dataObj); 

Odpowiedz

11

Można wykorzystać $.ajaxSetup() zarejestrować globalnych teleskopowe stanie błędu.

Opis: Ustaw domyślne wartości dla przyszłych żądań AJAX.

Przykład:

$.ajaxSetup({ 
    statusCode: { 
     500: function(data) { 
      alert('Some friendly error message goes here.'); 
     } 
    } 
}); 
+0

* "Uwaga: Globalne funkcje zwrotne powinny być ustawione z ich globalnych Ajax-'.ajaxStart metod obsługi zdarzeń()', '.ajaxStop()' '. ajaxComplete() ',' .ajaxError() ',' .ajaxSuccess() ',' .ajaxSend() '-rather niż w obiekcie options dla' $ .ajaxSetup() '." * – josh3736

Powiązane problemy