Добрый день,
У меня есть следующие функции, которые отображают и скрывают загрузчик страницы:
busyStatusDelay = 1000; //milliseconds
var timer = null;
var show = false;
function busyShow(nodelay,delay) {
timer = setTimeout('busyDelayShow()',busyStatusDelay);
}
function busyDelayShow() {
if ($.active > 0) {
$('#json-overlay').css('display', 'table');
show = true;
}
}
function busyHide() {
clearTimeout(timer);
timer = null;
show = false;
$('#json-overlay').css('display', 'none');
}
Это прекрасно работает для обычных запросов ajax, однако у нас есть новая функция, которая должна отправлять электронные письма с SMTP, но это соединение SMTP занимает несколько секунд, чтобы подключиться и отправить электронную почту.
Чтобы избежать этого, я хочу, чтобы функция ajax не вызывала этот загрузчик, функция не вызывает функцию, чтобы открыть загрузчик, но проблема в том, что когда вызывается другая функция, которая должна открывать загрузчик, она обнаруживает, что является активным соединением, поэтому загрузчик возвращается и не исчезает.
Я попытался использовать следующее, чтобы JS не видел его в качестве активного запроса:
xhr.abort(); busyHide();
но когда ajax прерывается, php прерывается с ним.
Обратите внимание, что функции для отправки электронных писем должны работать в фоновом режиме и не должны ждать ответа.
Я искал способ отключиться от запроса к серверу, не влияя на работающие функции сервера и отправить электронное письмо.
Я видел ignore_user_abort
в другом посте, поэтому буду немного читать об этом, чтобы посмотреть, будет ли это работать без влияния на остальную систему.
Заранее спасибо за любые советы о том, как продолжить!