Вы можете использовать $.ajaxSetup()
для этого:
$.ajaxSetup({
complete: function (xhr) {
if (xhr.getResponseHeader('E_TIMEOUT') == "1") {
//redirect to login
}
}
});
Этот подход немного отличается, он использует заголовки ответа, которые вы можете получить без разбора данных без дополнительного временикаждый запрос (который возможен, хотя и не задокументирован и может быть разбит), что вам придется делать в противном случае, в глобальной ситуации.
На стороне сервера, куда вы отправляете E_TIMEOUT
для ответа, просто измените его, чтобы добавить заголовок, E_TIMEOUT=1
(или любой другой заголовок, который вы хотите).Я на самом деле помещаю этот заголовок только на мою страницу входа, тайм-ауты перенаправляются через 302 (что прозрачно следует за XmlHttpRequest), так что если пользовательские тайм-ауты и запрос AJAX фактически заканчиваются на странице входа, я делаю location.reload()
, чтобы отразить этона странице.Это просто еще один вариант, если вы идете по этому пути, он выглядит следующим образом:
$.ajaxSetup({
complete: function (xhr) {
if (xhr.getResponseHeader('LoginPage') == "1") {
location.reload();
}
}
});
Не зная, какую серверную платформу вы используете, я не могу сказать, как установить заголовки, но это довольно легко для всех распространенныхплатформы.