我正在尝试使用拦截器来拦截我的ajax请求,但它仅适用于GET
请求,我尝试使用POST
和PUT
,但注意接缝要执行特技。有什么想法?
这是我如何创建我的拦截器
app.factory('httpInterceptor', ['$q', '$location', '$injector',
function ($q, $location, $injector) {
return {
request: function(config) {
var AuthService = $injector.get('AuthService');
console.log(AuthService.getCurrentUser(), AuthService.getCurrentUser().key);
if(config.usingKey === true) config.headers['X-API-KEY'] = AuthService.getCurrentUser().key;
if(config.beforeSend && typeof config.beforeSend == "function") config.beforeSend();
return config;
}
};
}]);
我正在使用此服务拨打电话
angular.module('myapp')
.service('EventService', ['$filter', '$http', 'CONFIG', function ($filter, $http, CONFIG) {
this.create = function(params, beforeSend, usingkey) {
if(usingkey == null) usingkey = true;
return $http.put(CONFIG.DEV ? CONFIG.URL_API_DEV + "event" : CONFIG.URL_API + "event", {params: params, beforeSend: beforeSend, usingKey: usingkey})
};
}]);
最后我使用此代码调用我的服务。
select: function (start, end, jsEvent, view, resourceObj) {
EventService.create({}, function(){
$('.status').find('i').removeClass("fa-check").addClass("fa-spin fa-circle-o-notch");
}).then(function($data){
$('.status').find('i').removeClass("fa-spin fa-circle-o-notch").addClass('fa-check');
event.realid = $data.data.value.id;
Calendar.fullCalendar('updateEvent', event);
}, function(err){
$('.status').find('i').removeClass("fa-spin fa-circle-o-notch").addClass('fa-close').css({'color': 'red'});
toastr.error(err);
});
$scope.$apply(); // The $apply is for another part of the code, it is required.
}
如果您有任何想法,请告诉我, 谢谢,祝你有个美好的一天!