[英]handle success/error responses http request angularjs
我的app.js中有一个名为UserService的工厂,该工厂为我执行所有用户HTTP请求。
当我尝试创建用户时,我具有以下方法。
function create(user) {
return $http.post(envService.read('apiUrl') + '/auth/register', user).then(handleSuccess, handleError('Error creating user'));
}
然后在我的控制器中执行以下操作:
function register() {
vm.dataLoading = true;
UserService.create(vm.user).then(function successCallback(response) {
$location.path('/');
Flash.create('success', response.message);
}, function errorCallback(error) {
Flash.create('danger', error);
vm.dataLoading = false;
});
}
处理成功和错误的功能
// private functions
function handleSuccess(res) {
return res.data;
}
function handleError(error) {
return function () {
return { success: false, message: error };
};
}
但是,即使响应代码是403或导致错误的其他任何内容,它也总是进入成功回调。 我在这里做错什么了吗?
在Angular JS中,当您为'$ http'提供回调函数时,可以选择不将参数设置为类似
$http.get('/someUrl', config).then(successCallback, errorCallback);
或者您在函数内部提供回调,例如
$http({
method: 'GET',
url: '/someUrl'
}).then(
function successCallback(response) {},
function errorCallback(response) {}
);
另一方面,如果您确实想在回调中调用自己的函数,则可以选择这种方式,
$http(
{
method: this.url.method,
url: serviceURL,
}
).
success(function(data, status, headers, config) {
successCallback(data, status, headers, config);
}).
error(function(data, status, headers, config) {
errorCallback(data, status, headers, config);
});
因此,基本上,您的回调函数需要一个“ response”参数,其中包含
在您的代码中,我将使用一些适当的回调更改handleError('Error creating user')
,并在回调中接收该对象。
要了解详细信息,请阅读此
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.