2012-05-27 2 views
3
  1. Пользователь нажимает на какую-либо ссылку, которая выполняет какой-либо запрос ajax - скажет, что этот запрос занимает 20 секунд.
  2. Прежде чем запрос будет выполнен, пользователь нажимает на другую ссылку, которая перенаправляет целую страницу (без аякса) на другую страницу.

Что произойдет с запросом ajax? Он будет всегда заполняться на стороне сервера, но ответ не придет нигде? Или, может быть, запрос ajax на стороне сервера будет «убит»Что произойдет, когда location.href будет изменен до завершения запроса ajax?

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

+3

_Что произойдет? что случилось, когда вы сами это пробовали? – Asif

ответ

5

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

2

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

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

Смежные вопросы