2016-09-29 10 views
0

私はionicでアプリケーションを構築していますが、$ http()AJAX呼び出しで発生する500内部サーバーエラーを処理したいと思います。それを処理するためのインターセプタを作成することは可能ですか?ユーザーは、いくつかの無効な入力を入力し、サーバはそれが500内部サーバーエラーをスローすることを扱うことができない場合AngularJSのHTTP 500内部サーバーエラーを処理します

.controller('RegistrationController',function($scope,$http){ 
    $scope.doRegistration = function(){ 
      $http({ 
       method : "POST", 
       url : BASE_URL, 
       params : { 
         //sending the parameters as JSON 
       } 
      }).then(function successCallback(response){ 
       if(response.status == 200) 
        //handling the response sent by server 
      },function errorCallback()}); 
    }; 
}); 

は、ここに私のコントローラのコードです。 AJAX呼び出しが行われたときにスピナーが表示され、サーバーエラーが発生した場合、AJAX呼び出しを停止してスピナーを停止し、ユーザーに "発生したサーバーエラー"というポップアップを表示する必要があります。

答えて

2
'use strict'; 

angular.module('myApp').factory('MyService', function ($http, $q) { 

var BASE_URL = 'some.url.com'; 

function register() { 

    var defer = $q.defer(); 

    $http({method: "POST", url: BASE_URL, params: {}}) 
    .then(function (response) { 
     defer.resolve(response.data); 
    }) 
    .catch(function (reason) { 
     defer.resolve(reason); 
    }); 

return defer.promise; 
} 


return { 
register: register 
} 

}).controller('MyController', function ($scope, MyService) { 

    MyService.register().then(function (response) { 
    // success 
    }).catch(function (reason) { 
    // err 
    if (reason.status === 500) { 
     // do something 
     $scope.spinner = false; 
     console.log('Encountered server error'); 
    } 
    }); 
}); 
0

あなたは以下のようにインターセプタを作成することができます -

app.factory('testResponseInterceptor', function ($q ,$rootScope,$location) { 
return { 
    response: function (response) { 
     //correct response 
     return response; 
    }, 
    responseError: function (response) { 
     //error in response 
    } 
    }; 
}); 

し、あなたのモジュールでそれを設定 -

app.config(function ($httpProvider) { 
    $httpProvider.interceptors.push('testResponseInterceptor'); 
}); 
関連する問題