2017-07-06 2 views
0

ich zusätzliche Operation ausgeführt werden soll, bevor HTTP-Request aufrufen (Ajax GET und POST)Griff Ajax-Aufruf AngularJS mit

Angenommen, ich habe folgenden Code:

function CallHTTP() 
{ 

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

    }); 

} 

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

i oben Anfrage mit AngularJS Interceptor behandeln möchten . ist es möglich ?

Ich habe versucht, folgende:

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); 
         } 
        }; 
       }]); 
      }]); 

aber obige Code nicht ausgeführt, wenn geschieht Ajax-Aufruf. Wie erreiche ich das?

Danke.

+0

Ein Interceptor fängt einen Request/Response-Austausch ab, führt ihn aber nicht aus. Sie müssen '$ http' verwenden. https://docs.angularjs.org/api/ng/service/$http – sjahan

+0

Wenn Sie dies mit jquery tun möchten, verwenden Sie jquery ajax events: $ (document) .bind ("ajaxSend", function() {console .log ('vor Anfrage');}); https://api.jquery.com/Ajax_Events/ –

Antwort

2

Sie verwenden jquery Ajax Call und Ihre Einstellungen sind in der eckigen Interceptor. Verwenden Sie $ http, um Ihre Winkeleinstellungen zu verwenden.