Подход, который вы используете, будет иметь больше смысла, если вы хотите запросить у пользователя информацию о том, что сеанс скоро истечет, а не после того, как сеанс истек.Однако, если вы хотите продолжить использовать этот подход, у вас должен быть общий контроллер / утилита (считайте оберткой над библиотекой, которую вы используете для запросов ajax), из которой вы запускаете все ваши запросы ajax.Таким образом, всякий раз, когда вы хотите вызвать ajax-запрос, вы передаете подробности контроллеру, который, в свою очередь, выполняет фактический ajax-запрос.Затем он получит ответ от сервера и передаст его вызываемому абоненту для дальнейшей обработки.Здесь вы можете обрабатывать переменную таймера для каждого пост-запроса.
Теперь, если вы используете общий контроллер, вы можете избавиться от этого таймера все вместе.Когда сессия истечет, ваш сервер будет перенаправлен на страницу входа, в основном с кодом состояния 302. Ваш браузер обработает этот запрос на перенаправление и предоставит ваш обратный вызов ajax с помощью html страницы входа.На этом этапе вы можете запросить диалог сообщения или событие, лучше отобразить экран входа в систему, чтобы пользователь мог повторно подтвердить свою подлинность и продолжить свою работу оттуда.Это должно привести к некоторому изменению кода, но, безусловно, должно облегчить ситуацию в будущем.