2017-07-06 48 views
0

我想调用的HTTP请求之前执行其他操作(阿贾克斯GET和POST)处理Ajax调用使用angularjs

假设我有以下代码:

function CallHTTP() 
{ 

    $.ajax({ 
     url: '/abcd/abcd', 
     type: 'POST', 
     success: function() { 
      alert("Success"); 
     }, 
     error: function (arg1, arg2, arg3) { 
      alert("error"); 
     } 

    }); 

} 

$(document).ready(function() { 
    CallHTTP(); 
}); 

我想用angularjs拦截器来处理上述请求。可能吗 ?

我尝试以下操作:当Ajax调用发生

angular.module('app', []) 
      .config(['$httpProvider', function ($httpProvider) { 
       $httpProvider.interceptors.push(['$location', '$q', function ($location, $q) { 
        return { 
         'request': function (request) { 
          console.log("abcd"); 
          return request; 
         }, 
         'responseError': function (response) { 
          if (response.status === 401) { 
           console.log("abcd2"); 
           // do stuff 
          } 
          console.log("abcd1"); 
          // otherwise, default behaviour 
          return $q.reject(response); 
         } 
        }; 
       }]); 
      }]); 

,但上面的代码不会执行。如何实现它?

谢谢。

+0

拦截器拦截请求/响应交换,但它不执行它。你必须使用'$ http'。 https://docs.angularjs.org/api/ng/service/$http – sjahan

+0

如果你想用jQuery做它,请使用jquery ajax事件: $(document).bind(“ajaxSend”,function(){console .log('request request');}); https://api.jquery.com/Ajax_Events/ –

回答

2

您正在使用jquery ajax调用,并且您的设置位于角拦截器中。使用$ http来使用你的角度设置。