Javascript 将ajax请求限制为单个页面
我为我的用户建立了一个web管理页面, 此页面包含每4秒调用一次以显示实时信息的ajax, 我的问题是,我的一些用户在不同的选项卡上多次打开此页面而没有注意到它, 这会导致对我的php服务的请求过多, 是否有一种方法可以设置它,使页面重新打开后,它将停止发送请求的旧页面 谢谢,Javascript 将ajax请求限制为单个页面,javascript,php,ajax,Javascript,Php,Ajax,我为我的用户建立了一个web管理页面, 此页面包含每4秒调用一次以显示实时信息的ajax, 我的问题是,我的一些用户在不同的选项卡上多次打开此页面而没有注意到它, 这会导致对我的php服务的请求过多, 是否有一种方法可以设置它,使页面重新打开后,它将停止发送请求的旧页面 谢谢, Rami。您可以将cookie写入用户计算机,并在上次收到用户请求时在服务器上进行检查。如果时间早于4秒,则您不处理此请求。在现代浏览器中,从IE10及以上版本,您可以使用来确定选项卡是否处于活动状态,并仅在活动选项卡中
Rami。您可以将cookie写入用户计算机,并在上次收到用户请求时在服务器上进行检查。如果时间早于4秒,则您不处理此请求。在现代浏览器中,从IE10及以上版本,您可以使用来确定选项卡是否处于活动状态,并仅在活动选项卡中保持轮询,类似于这样
var hidden, visibilityChange, timer;
if (typeof document.hidden !== "undefined") {
hidden = "hidden";
visibilityChange = "visibilitychange";
} else if (typeof document.mozHidden !== "undefined") {
hidden = "mozHidden";
visibilityChange = "mozvisibilitychange";
} else if (typeof document.msHidden !== "undefined") {
hidden = "msHidden";
visibilityChange = "msvisibilitychange";
} else if (typeof document.webkitHidden !== "undefined") {
hidden = "webkitHidden";
visibilityChange = "webkitvisibilitychange";
}
function handleVisibilityChange() {
if (document[hidden]) {
stopAjax();
} else {
startAjax();
}
}
document.addEventListener(visibilityChange, handleVisibilityChange, false);
function startAjax() {
timer = setInterval(function() {
$.ajax(options);
}, 4000);
}
function stopAjax() {
clearInterval(timer);
}
您可以测试会话,如果您在低于4秒的时间内有一个会话2次,只需使用一个特殊的返回和一些javascript处理锁定此页面即可;)我不知道你的应用程序,但可能在窗口不活动时不执行这些请求?如果没有人查看内容时不需要刷新内容,请尝试以下解决方案: