#html #ajax #json #struts #tiles
#HTML #ajax #json #распорки #плитки
Вопрос:
Я выполняю вызовы ajax и json на своем сайте, время ожидания сеанса которого на стороне сервера составляет 120 минут. По истечении времени, когда пользователь пытается выполнить вызов ajax или json со страницы, которая была загружена, вызов выполняется, я просто сижу там без ответа. Я использую sturts.xml файл для обработки всех моих вызовов action / URL, и в этом файле есть перехватчик, который запускается при каждом вызове, выполняемом на сервере. Перехватчик проверяет, вошли ли вы в систему, и отправляет вас на экран входа в систему, если это не так. Проблема в том, что все вызовы ajax и json будут настроены следующим образом:
* Мне пришлось заменить все теги «<» и «>» на «(» и «)», поскольку редактор их не показывает, поэтому просто замените скобки на «>» и «<«
(имя действия = «someAction» класс = «ActionClass» метод =»someMethod») (имя результата = «success» тип = «json») (имя параметра = «target»)результат (/param) (имя параметра=»patterns») -*.class(/param) (/result) (/action)
Существует глобальный результат, который будет вызван, когда перехватчик захочет отправить вас на страницу входа, как указано ниже:
(имя результата = «login», тип = «tiles») сайт.вход в систему (/результат)
поскольку перехватчик отправляет обратно результат «login», а не «success», вызовы ajax и json никогда не получают ожидаемого результата, и когда я смотрю на ответы, которые получает браузер, это необработанный HTML страницы, на которую я ожидаю быть перенаправленным. Любой другой тип вызова сервера срабатывает и отправляет вас на экран входа в систему, если время ожидания вашего сеанса истекло. Если я попытаюсь выполнить вызов action как обычный lin, это сработает, но я не могу выполнить какие-либо вызовы ajax или json и заставить его работать. Есть предложения?
Ответ №1:
Возможно, это немного по-хакерски, но вот что я делаю на php (не уверен, с каким языком вы работаете):
if ($is_ajax_request amp;amp; $not_logged_in)
{
exit('<script>top.location="/your_login_uri";</script>');
}
Вызов ajax возвращает тег script, который перенаправит текущую страницу на вашу страницу входа. Еще раз не уверен, используете ли вы это, но вы можете обнаруживать ajax-запросы с помощью php. Вероятно, это не лучший способ сделать это, но я использую его около года, и каждый раз он работает идеально. Надеюсь, это даст вам хотя бы некоторые идеи.
Читатели, пожалуйста, прокомментируйте, если вы считаете это решение плохой идеей, и скажите мне, почему, я хотел бы знать, потому что я использую его во всех своих проектах.
Комментарии:
1. Извините, я забыл упомянуть, но я использую Java для своей серверной части и JSP и Javascript для интерфейса.