【问题标题】:Intercepting jQuery ajax calls in Angular在 Angular 中拦截 jQuery ajax 调用
【发布时间】:2017-04-24 11:22:49
【问题描述】:

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

$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 调用和错误没有被捕获。所以我的问题是,我在我的应用程序中从角度和角度截取所有 ajax 请求的正确方法是什么?理想情况下,我希望两者都有一个处理程序。

【问题讨论】:

    标签: javascript jquery angularjs ajax


    【解决方案1】:

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

    在这篇文章中,如何在引擎盖下制作拦截器。这可能是给你的一个提示。 what are interceptors

    more info

    希望对你有帮助!

    【讨论】:

    • 谢谢,我们最终从 jquery 沙发转移到一个完全有角度的 $http 实现,所以现在所有的 ajax 调用都被拦截了。
    • 问题是当你使用第三方库时,比如 svgxuse :)
    • 我认为这不是比通过角度设施传递所有东西更好的方法。另一种更简洁的方法是为rest调用创建一个工厂,它为所有调用设置适当的标头并从那里为每次调用生成服务,将外部lib rest调用传递给这些服务。
    猜你喜欢
    • 2011-10-16
    • 1970-01-01
    • 2020-11-08
    • 2018-07-08
    • 2016-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-24
    相关资源
    最近更新 更多