php - setInterval 函数期间 $_SESSION 变量检查后 div 元素未隐藏

标签 php javascript jquery session-variables setinterval

这里是第一篇文章(尽管是长期读者)!

我创建了一个 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/

相关文章:

javascript - 如何摆脱包装 '\n' 获取 $(element).html()

php - 在 Silverstripe 4 中扩展 UserDefinedForm 类的问题

php - 使用 MySQL 和 PHP 进行多个下拉选择

javascript - 如何获取jsp数据并显示在javascript函数的变量中

javascript - form.on ('submit' ) 不会在 form.submit() 之前触发

javascript - 如何使tinymce输入只读

javascript - angular指令jquery.dotdotdot,如何 chop 'animate'?

nginx - 无法从 Nginx php - 基于 fpm 的 dedi 发送电子邮件?

Javascript 验证文件输入名称

javascript - 什么是 self.scale.endPoint chartJs v2.0?