2016-12-09 52 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