【发布时间】:2017-07-06 12:55:08
【问题描述】:
我想在调用 http 请求之前执行额外的操作(Ajax GET 和 POST)
假设我有以下代码:
function CallHTTP()
{
$.ajax({
url: '/abcd/abcd',
type: 'POST',
success: function () {
alert("Success");
},
error: function (arg1, arg2, arg3) {
alert("error");
}
});
}
$(document).ready(function () {
CallHTTP();
});
我想使用 angularjs 拦截器处理上述请求。有可能吗?
我尝试了以下操作:
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);
}
};
}]);
}]);
但是当发生 ajax 调用时,上面的代码不会执行。如何实现?
谢谢。
【问题讨论】:
-
拦截器拦截请求/响应交换,但不执行。您必须使用
$http。 docs.angularjs.org/api/ng/service/$http -
如果你想用 jquery 做,使用 jquery ajax events: $(document).bind("ajaxSend", function () { console.log('before request'); }); api.jquery.com/Ajax_Events
标签: javascript jquery angularjs ajax