방법1
$(function () {
$.ajaxSetup({
error: function (x, status, error) {
if (x.status == 403) {
alert("세션이 만료되었습니다.");
window.location.href ="/Account/Login";
}
else {
alert("An error occurred: " + status + "nError: " + error);
}
}
});
});
- 이 방법은 좋기는 좋은데, 문제가 기존
$.ajax({})
에서 error 를 직접 지정하면,
해당 local error handler 는 무시된다
- 만약 global error handler 와 local error handler 를 동시에 만족시키고 싶다면 방법2를 사용하자.
방법2
$.ajaxPrefilter(function (options, originalOptions, jqXHR) {
let error = options.error;
options.error = function (jqXHR, textStatus, errorThrown) {
console.log('global ajax error');
if (typeof error === 'function') {
return $.proxy(error, this)(jqXHR, textStatus, errorThrown);
}
};
});
TIP. 전역 헤더 세팅하기
$.ajaxPrefilter(function (options, originalOptions, jqXHR) {
jqXHR.setRequestHeader("AJAX", true);
});
- 참고로 jquery ajax 는 기본적으로 "X-Requested-With: XMLHttpRequest" 를 Header 에 넣어준다.
- 그러니 ajax 요청을 jquery 를 통해서만 하면 굳이 위처럼 ajax 요청이라는 것을 명시적으로 헤더에 표기할 필요가 없다.
참고한 링크