这里是第一篇文章(尽管是长期读者)!
我创建了一个 setInterval 函数来检查 $_SESSION['status'] 变量,然后根据 $_SESSION 变量的值隐藏/显示某些元素。 (这是我为类(class)创建的测验网站。)
我希望它可以在用户可能打开的任何选项卡上运行。因此,假设用户打开了 2 个选项卡,并且正在查看网站上的两个不同页面。当用户开始在选项卡 A 上进行测验时,选项卡 B 的 setInterval 函数应该看到 $_SESSION['status'] 变量已更改并显示/隐藏相关元素(以防止学生在测试期间阅读网站上的页面)。测验)。当我在选项卡 A 上进行测验时,选项卡 A 隐藏/显示正确的信息。但是,选项卡 B 保持不变,直到我刷新页面,然后它才会执行正确的操作。
如何让选项卡 B 在不刷新的情况下自行更改?
如果重要的话,浏览时 $_SESSION['status'] = -1,参加测验时值为 0 或以上。
提前致谢!
<script>
$(document).ready(function(){
function check_login()
{
if ("<?php echo $_SESSION['status']; ?>" >= '0')
{
$("#pagecontainer").hide();
$("#quiz_msg").show();
}
else
{
$("#pagecontainer").show();
$("#quiz_msg").hide();
}
}
window.setInterval(check_login, 1000);
});
</script>
最佳答案
您的 JavaScript 函数将包含页面加载时的 session 变量值。
Javascript 无法直接访问 php 脚本或服务器变量,因为 javascript 运行在客户端,而不是服务器。
要实现此功能,您需要使用 ajax 调用来检查 session 变量,或者如果您想变得更有趣,则可以使用 websockets。
关于php - setInterval 函数期间 $_SESSION 变量检查后 div 元素未隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18364136/