Javascript 如何检测所有http GET失败?
在我的应用程序中,我有一个通过HTTP协议获取数据的网格。目前,我可以检测到Javascript 如何检测所有http GET失败?,javascript,angularjs,Javascript,Angularjs,在我的应用程序中,我有一个通过HTTP协议获取数据的网格。目前,我可以检测到errorCallbacks-如下所示: myDataPromise.then(function () { //do stuff }, function errorCallback(response) { if (response.statusText === "Not Found") { //do stuff }else if(response.statu
errorCallback
s-如下所示:
myDataPromise.then(function () {
//do stuff
}, function errorCallback(response) {
if (response.statusText === "Not Found") {
//do stuff
}else if(response.statusText === "Internal Server Error"){
//do stuff
}
但是,对于SSL错误,chrome会回击“ERR::CONNECTION-rejected”,我无法通过读取字符串来了解这一点,因为我可以使用404等。我真正想要的是显示一个简单的图像/文本,说明在检索数据时无论数据是什么,都出现了错误。因此,如果http GET完全失败,用户就知道了。在我看来,这似乎是一个相当典型的规范,但我在网上找不到太多关于它的信息。您必须创建一个
拦截器截获所有$http流量。即使在加载模板时。您也必须创建一个
拦截器截获所有$http流量。即使在加载模板时。u可以使用拦截器检查每个http请求:)u可以使用拦截器检查每个http请求:)这将如何调用?我很难看出这与我的apply button函数(它在服务中执行“GET”函数,并返回一个或一个承诺数组)如何匹配。这有意义吗?我在哪里调用这些函数?您只需将这个拦截器添加到您的应用程序中。每个$http请求和响应都将通过此拦截器。如果收到响应错误,拦截器将执行“responseError”函数。你可以通过发出一个事件来处理它,这样你就可以在其他地方处理它。是的,它工作了,哇,这是一个惊人的功能!谢谢你的帮助!这叫什么?我很难看出这与我的apply button函数(它在服务中执行“GET”函数,并返回一个或一个承诺数组)如何匹配。这有意义吗?我在哪里调用这些函数?您只需将这个拦截器添加到您的应用程序中。每个$http请求和响应都将通过此拦截器。如果收到响应错误,拦截器将执行“responseError”函数。你可以通过发出一个事件来处理它,这样你就可以在其他地方处理它。是的,它工作了,哇,这是一个惊人的功能!谢谢你的帮助!
// register the interceptor as a service
$provide.factory('myHttpInterceptor', function($q, dependency1, dependency2) {
return {
// optional method
'request': function(config) {
// do something on success
return config;
},
// optional method
'requestError': function(rejection) {
// do something on error
if (canRecover(rejection)) {
return responseOrNewPromise
}
return $q.reject(rejection);
},
// optional method
'response': function(response) {
// do something on success
return response;
},
// optional method
'responseError': function(rejection) {
// do something on error
if (canRecover(rejection)) {
return responseOrNewPromise
}
return $q.reject(rejection);
}
};
});
$httpProvider.interceptors.push('myHttpInterceptor');
// alternatively, register the interceptor via an anonymous factory
$httpProvider.interceptors.push(function($q, dependency1, dependency2) {
return {
'request': function(config) {
// same as above
},
'response': function(response) {
// same as above
}
};
});