После нажатия на кнопку я хочу запустить вызов Ajax и затем перенаправить к другим страницам, не ожидая результат ajax. Действительно ли это возможно? Мой код следующим образом:
$('button').click(function(){
$.get('mailer.php', function(){
window.location.replace("result.php");
});
});
Код выше будет ожидать результата ajax перед перенаправлением. Я могу просто позволить ajax, выполненному сзади, и идти дальше к другим страницам?
Похоже, что сценарий, который вы ajax-ing, чтобы отправить электронную почту. Я вижу, как ждать этого для завершения, приведет к задержке на конце пользователя. Вот как я обычно решаю эту проблему:
вместо того, чтобы ваш скрипт Mailer.php немедленно отправить электронную почту, хранить данные сообщения в вашей БД. Не отправляйте электронную почту во время вызова AJAX. Это приведет к очень быстрому процессу для пользователя.
Затем вы можете настроить работу CRON, которая указывает на сценарий, который вы специально создали для отправки электронной почты, которые были сохранены в БД.
имеет смысл?
Если вы перейдете на другую страницу, соединение с сервером может быть прервано (нет правила, препятствующего браузеру делать это) и действие может быть не завершено. Короче говоря: вы должны подождать.
Если вы немедленно уйдете, запрос будет отклонен. Вам нужно будет включить логику на сервере, чтобы поддерживать любой процесс, который был запущен запросом jquery ajax.
Например, в PHP существует функция ignore_user_abort()
, которая при установке значения true
будет продолжать процесс даже после того, как пользователь прервет запрос.