2016-12-09 49 views
0

我在Angular应用程序中使用捆绑了$ .couch API的CouchDBs。我想拦截所有ajax请求,无论是从Angular的$ http服务还是jQuery的$ .ajax(这是$ .couch使用的)。我有一个拦截器的角度设置如下:在Angular中拦截jQuery ajax调用

$httpProvider.interceptors.push(['$location', '$q', function($location, $q) { 
     return { 
      'request': function(request) { 
       return request; 
      }, 
      'responseError': function(response) { 
       if (response.status === 401) { 
       console.log("UH OH") 
       } 
       // otherwise, default behaviour 
       return $q.reject(response); 
      } 
     }; 
    }]); 

和我所注意到的是,从$ HTTP角服务请求和响应错误被发现,但$就调用和错误都没有。所以我的问题是,我有什么正确的方法来拦截我的应用程序中的所有ajax请求从角度出入?理想情况下,我想有一个处理程序。

回答

0

没有一个真正的答案,但是拦截器肯定是角度$ httpProvider对象的属性特定的数组。 jQuery中没有类似的东西。没有办法让你的代码知道有关$ .ajax调用的内容。我不知道,也许你可以将jquery ajax包装在一个承诺中,重新创建拦截器。

在这篇文章中描述的是如何制作拦截器在引擎盖下的角度。这可能是对你的暗示。 what are interceptors

more info

希望它能帮助!

+1

谢谢,我们结束了离开jquery沙发到一个完全角度的$ http实现,所以现在所有的ajax调用都被拦截。 – Rudy

+0

问题是,当你使用第三方库,如svgxuse :) –

+0

我认为这不是一个更好的方式通过角设施通过everiything。另一个更简洁的方法是建立一个休息时间调用的工厂,为每个调用设置适当的头文件,并为每个调用生成服务,并将外部lib休息调用传递给这些服务。 – netalex