Возможно ли отправить ajax-запрос, не дождавшись ответа перезагрузить страницу и потом поймать ответ?
Привет, друзья!
Возник такой вопрос, возможно, кому-то он покажется странным, но хочу разобраться.
Допустим, запрос на сервер идёт 30 секунд. Возможно ли отправить ajax-запрос, не дождавшись ответа перезагрузить страницу, например, на 10 секунде и потом на 30 секунде поймать ответ?
Нет
upd
вам не над получением ответа ajax после закрытия надо думать - это не возможно (сервер не будет ждать когда пользователь откроет браузер, да и не может он этого сделать попросту). Получаете ответ - в кукис сохраняте таймстамп и относительно него выводите таймер.
Дело не в таймере, а в том, что когда клиент закроет браузер, процесс на сервере будет продолжаться. И если пользователь снова откроет браузер в том момент, когда статус ещё не изменился, надо в дальнейшем его об этом уведомить.
IgorNoskov, Ну, как вариант, могу предложить веб сокеты. Если скрипт на фронте постоянно(первым делом) подключается к серверу посредством websocket, то он может проверить состояние исполнения задачи и получить решения без постоянных запросов к серверу. А данные по задаче хранить в базе с привязкой к юзеру (если не авторизован - уникальное рандомное значение, которое хранится в базе и в куках гостя). Но, в такой схеме и ajax относительно не плох.
Очень странный вопрос. Можно, но костыли окажутся сложнее, чем забить на это.Примерно так:
1. Запросы логировать
2. В куках хранить id текущего запроса
3. Каждые несколько секунд проверять статус текущего запроса
4. Результат запроса писать в БД в виде строки JSON к ID запроса
5. При получении результата производить дейстия.
У меня логика такая. С помощью ajax-запроса запускается процесс отправки запросов на разные сервера. В это время пользователю показывается окно с таймером. Когда запрос удачный, возвращается ответ и пользователя перекидывает на соответствующую страница. Загвоздка в том, что если пользователь перезагрузит страницу или закроет браузер и снова откроет окно, ему нужно показать то же самое окно с таймером. Поэтому такой странный вопрос.
Дело не в таймере, а в том, что когда клиент закроет браузер, процесс на сервере будет продолжаться. И если пользователь снова откроет браузер в том момент, когда статус ещё не изменился, надо в дальнейшем его об этом уведомить.