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