Javascript 404上的$http调用成功
我通过服务公开此功能:Javascript 404上的$http调用成功,javascript,angularjs,ajax,promise,angular-promise,Javascript,Angularjs,Ajax,Promise,Angular Promise,我通过服务公开此功能: function getData(url) { return $http.get(url).then(function (response) { return response.data; }); } 如果通话成功,一切都很好——我得到了一个如预期般解决的承诺 如果我传入一个生成404的URL,我会得到: TypeError:无法读取未定义的属性“data” 在线:返回response.data 我可以在Chrome的开发者工具中看到,G
function getData(url) {
return $http.get(url).then(function (response) {
return response.data;
});
}
如果通话成功,一切都很好——我得到了一个如预期般解决的承诺
如果我传入一个生成404的URL,我会得到:
TypeError:无法读取未定义的属性“data”
在线:返回response.data代码>
我可以在Chrome的开发者工具中看到,GET
返回404
为什么Angular(v1.4.7,也尝试了v1.5.0)在出现错误时用未定义的调用我的successCallback
(我要做的是处理调用代码中的失败。)
编辑:@jcaron为我指出了正确的方向。问题似乎是此配置行(由另一个开发人员编写):
拦截器必须有设计缺陷:
function ErrorInterceptor($q, $window) {
return {
response: function (response) {
return response;
},
responseError: function (response) {
if (response.status === 500) {
$window.location.href = '/error';
return $q.reject(response);
}
}
};
拦截器必须有设计缺陷
的确如此。如果拒绝状态不是500,则返回未定义的
,以实现承诺。应该是
…
responseError: function (err) {
if (err.status === 500) {
$window.location.href = '/error';
}
return $q.reject(err); // always pass on rejection
}
在这里触发错误回调:也许代码中有什么不同?(假设从1.4.7版到1.4.8版没有太大变化)您是否可以使用进行测试,以确保它不是特定于您的代码…使用httpstat进行了尝试;同样的问题。我把我的代码复制粘贴到@OmriAharon的小提琴叉上;它在那里工作正常,但在我的环境中工作不正确!你是否有一个截取器,它可能在做一些奇怪的事情?
…
responseError: function (err) {
if (err.status === 500) {
$window.location.href = '/error';
}
return $q.reject(err); // always pass on rejection
}