【发布时间】:2019-01-17 13:16:22
【问题描述】:
下午好,
我有以下功能可以显示和隐藏页面繁忙的加载器:
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,因此将对此进行一些阅读,看看这是否可以在不影响系统其余部分的情况下工作。
提前感谢有关如何继续的任何提示!
【问题讨论】:
标签: javascript php ajax xmlhttprequest