1

在 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
});

如何从 Angular 中访问“错误”(即“废话”)?

4

2 回答 2

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
});
于 2013-10-26T17:35:41.373 回答
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);
    });
});
于 2016-05-12T19:38:53.413 回答