$ http调用返回错误消息

时间:2013-10-26 17:28:32

标签: javascript angularjs

在Angular中,我发出$ http请求,并希望返回错误消息,但不确定如何。

在Express中我想在出错时做以下(或类似的)。

res.send(400, { errors: 'blah' });  

在Angular,我目前有这个:

$http.post('/' ,{}).then(function(res) { }, function(err) {
  console.log(err) // no errors data - only 400 error code
});

如何访问"错误" (即" blah")来自Angular?

2 个答案:

答案 0 :(得分:1)

$ http消息提供,成功和错误功能:

$http({method: 'GET', url: '/someUrl'}).
success(function(data, status, headers, config) {
// this callback will be called asynchronously
// when the response is available
}).
error(function(data, status, headers, config) {
// called asynchronously if an error occurs
// or server returns response with an error status.
});

如果出现问题,如服务器错误或其他http错误,错误功能将被触发,您可以捕获错误。

如果其他东西触发或您必须向用户提供某种反馈,您可以使用success方法,但将数据作为其他内容返回如下:

data {message: 'your message here', success: /*true or false*/, result: /*some data*/ }

然后在成功函数中:

$http({method: 'GET', url: '/someUrl'}).
success(function(data, status, headers, config) {
  if(data.success) {
     // do stuff here
  }
  else {
    // show the error or notification somewhere
  }
}).
error(function(data, status, headers, config) {
  //do stuff if error 400, 500
});

答案 1 :(得分:0)

我知道这是一个古老的问题,但我相信你想要的是:

angular.module('App').factory('MainFactory', function($http) {
  return {
    post: function(something) {
      $http
        .post('/api', something)
        .then(function(result) {
          return result.data;
        }, function(err) {
          throw err.data.message;
        });
    }
  };
});

并从一个控制器

angular.module('App').controller('Ctrl', function($scope, MainFactory ) {
    $scope.something_to_send = "something"
    MainFactory
      .post($scope.something_to_send)
      .then(function(result){
        // Do something with result data
       }, function(err) {
        // showError(err);
    });
});