Что произойдет, когда location.href будет изменен до завершения ajax-запроса?

Пользователь нажимает на ссылку, которая выполняет какой-то запрос ajax - скажем, этот запрос занимает 20 секунд. Перед тем, как запрос будет выполнен, пользователь нажимает на ссылку oder, которая перенаправляет (без ajax) всю страницу на другую страницу.

Что будет с запросом ajax? Это будет всегда завершаться на стороне сервера, но ответ никуда не придет? Или, может быть, ajax-запрос на стороне сервера будет "убит"?

Я спрашиваю, потому что у меня есть какой-то сценарий, который требует времени для запуска, но пользователю не нужно теперь получать результат - он просто запускается и забывает - может быть, есть даже какая-то опция в ajax, чтобы заставить его не отправлять какой-либо ответ?

 Asif27 мая 2012 г., 15:17
Что случитс? что случилось, когда ты сам попробовал?

Ответы на вопрос(2)

не подозревая, что клиент «перешел». Сервер вернет ответ клиенту, как обычно. Клиент просто проигнорирует ответ.

Так что ожидайте, что все на стороне сервера произойдет как обычно, поэтому метод «забей и забудь» будет работать (так как клиент перешел и «забыл»). Но если вы хотите сделать что-нибудь на стороне клиента в ответ (что отрицает часть «забыть»), тогда новая страница не сможет перехватить ответ. Браузер проигнорирует это.

Решение Вопроса

однако это не означает, что ваша обработка на сервере тоже обязательно будет прервана:ignore_user_abort ()

Ваш ответ на вопрос