2017-04-17 3 views
0

場合は、空の応答データを持っているjsfiddle http://jsfiddle.net/vom4za2z/7/

を参照してください私は、ときにサーバーの応答エラー500内部サーバーエラー応答データをキャッチするために$ http.getを使用しています。

しかし、エラーコールバック関数では、それはなかれデータとレスポンスオブジェクトを返す= NULLとステータス= -1 Google Chromeブラウザの開発者ツールの「ネットワーク」タブで

チェック、あなたはステータスで、サーバからの応答が表示されますコードは500で、応答データは次のようになります。

{ 
"AppCode": null, 
"HttpCode": 500, 
"Url": "\/api\/categories\/getList.json", 
"Message": "Expired token", 
"Details": null 
} 

私は間違っていますか?応答データを取得するにはどうすればよいですか?任意の助け

おかげで、あなたのAPI呼び出しで

+0

をお試しくださいトークンは有効ですか? –

+0

トークンの有効期限が切れました。この場合、エラー応答データを取得したい –

答えて

0

使用.success.error。 SPOそれはステータスが200または成功になりますとき、それはそれはブロックをエラーになります他に、成功のブロックに行くこと...

あなたがベアラを再確認しましこの

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <title></title> 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.11/angular.min.js"></script> 
 
    <script type="text/javascript"> 
 
    angular.module("app", []).controller('Controller', Controller); 
 

 
    function Controller($scope, $http) { 
 
     $http.defaults.headers.common.Authorization = 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjEsImV4cCI6MTQ5MjM5OTQ5NX0.oAmERuuIssgRfArS9WMJ74p5afg114CCaLDGIL7k8K4'; 
 
     $scope.success = $scope.error = false; 
 
     $scope.getCode = function (code) { 
 

 
     var cateData = $http.get('https://cloudorder.vn/api/categories/getList.json'); 
 
     cateData.success(function(res, status) { 
 
      console.log(res); 
 
      console.log(status); 
 
     }) 
 
     .error(function(data, status) {  
 
      console.log(data); 
 
      console.log(status); 
 
     }); 
 

 

 

 
     // $http.get('https://cloudorder.vn/api/categories/getList.json').then(
 

 
     // function (data) { 
 
     //  $scope.success = true; 
 
     //  $scope.error = false; 
 
     //  $scope.data = data 
 
     // }, 
 

 
     // function (reason) { 
 
     //  $scope.success = false; 
 
     //  $scope.error = true; 
 
     //  $scope.data = reason 
 
     // }); 
 
     } 
 
     $scope.get200 = function() { 
 
     return $scope.getCode(200) 
 
     }; 
 
    } 
 

 

 
    </script> 
 
</head> 
 
<body> 
 

 
    <div ng-app="app" ng-controller="Controller" class="container"> 
 
    <h4>Response data catched on Developer tool but not in $http.get</h4> 
 
    <pre>{ 
 
     "AppCode": null, 
 
     "HttpCode": 500, 
 
     "Url": "\/api\/categories\/getList.json", 
 
     "Message": "Expired token", 
 
     "Details": null 
 
    }</pre> 
 
    <br/> 
 
    <br/> 
 
    <button ng-click="get200()">GET</button> 
 
    <p ng-show="success">Success!</p> 
 
    <p ng-show="error">Error!</p> 
 
    <p>{{data}}</p> 
 
    </div> 
 
</body> 
 
</html>

+0

ありがとう@Saurabh Agrawal、しかし、私のコードでは、応答データなしで正しいブロックに移動します。他の側.successと.errorは推奨されておらず、アンサー1.6で削除されています(https://docs.angularjs.org/guide/migration#migrate1.5to1.6-ng-services-$http) –

関連する問題