Ajax jQuery: перенаправьте к другим страницам без ожидания результат

После нажатия на кнопку я хочу запустить вызов Ajax и затем перенаправить к другим страницам, не ожидая результат ajax. Действительно ли это возможно? Мой код следующим образом:

$('button').click(function(){
    $.get('mailer.php', function(){
        window.location.replace("result.php");
    });
});

Код выше будет ожидать результата ajax перед перенаправлением. Я могу просто позволить ajax, выполненному сзади, и идти дальше к другим страницам?

5
задан Emil Ivanov 2 February 2010 в 14:03
поделиться

3 ответа

Похоже, что сценарий, который вы ajax-ing, чтобы отправить электронную почту. Я вижу, как ждать этого для завершения, приведет к задержке на конце пользователя. Вот как я обычно решаю эту проблему:

вместо того, чтобы ваш скрипт Mailer.php немедленно отправить электронную почту, хранить данные сообщения в вашей БД. Не отправляйте электронную почту во время вызова AJAX. Это приведет к очень быстрому процессу для пользователя.

Затем вы можете настроить работу CRON, которая указывает на сценарий, который вы специально создали для отправки электронной почты, которые были сохранены в БД.

имеет смысл?

2
ответ дан 14 December 2019 в 19:12
поделиться

Если вы перейдете на другую страницу, соединение с сервером может быть прервано (нет правила, препятствующего браузеру делать это) и действие может быть не завершено. Короче говоря: вы должны подождать.

2
ответ дан 14 December 2019 в 19:12
поделиться

Если вы немедленно уйдете, запрос будет отклонен. Вам нужно будет включить логику на сервере, чтобы поддерживать любой процесс, который был запущен запросом jquery ajax.

Например, в PHP существует функция ignore_user_abort() , которая при установке значения true будет продолжать процесс даже после того, как пользователь прервет запрос.

1
ответ дан 14 December 2019 в 19:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: