更改php变量的javascript警报

时间:2017-11-12 14:27:29

标签: javascript php variables echo

我在php中创建了一个$ _SESSION。其中一个值是最后一个活动标记。 我想在页面上的<div>元素上显示标记。

$ _SESSION [&#39; LAST_ACTIVITY&#39;]正在代码的php部分进行更新,根据控制台输出,我可以看到它已正确更改:

<?php
$action = $_POST['action'];
switch ($action) {
    case 'login':  DoLogin(); break;
    case 'logout': DoLogout(); break;
    case 'update': updateSessionActivity(); break;
    default: $errmsg_arr[] = 'Unknown action'; $errflag = true;
}

function updateSessionActivity()
{
    if (isset($_SESSION['LAST_ACTIVITY'])) {
        $_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp
    }
    echo "Session updated: ".$_SESSION['LAST_ACTIVITY'];
}
?>

在导航窗格选项卡之间切换时,使用$ ajax从jQuery调用以前的php函数,发布到php页面并更新$ _SESSION参数(我可以在echo session更新后在网络响应中看到它正确)。

然而,<div>元素的ID为&#34; page_header_cont&#34;只更新一次(第一次切换到另一个选项卡窗格)并且之后永远不会更改,尽管我继续在选项卡之间切换并看到POST正常工作且变量已更新。

<div id="page_header_cont" class="page_header_cont">
</div>

<script type="text/javascript">
    $("a[data-toggle='tab']").on("shown.bs.tab", function (e) {
        $.ajax({
                url: 'loginprocess.php',
                type: 'POST',
                data: {action: 'update'},
                success: function (response) {
                    $("#page_header_cont").html(" Last activity: " + "<?php echo date('Y-m-d H:i:s',$_SESSION['LAST_ACTIVITY']) ?>");
                },
                fail: function (response) {}
        });
    });
</script>

我缺少什么,为什么php echo为变量返回相同的值?在几个浏览器中试过,认为它是某种缓存问题,甚至试图回应time()。相同的输出。第一次正常工作,然后停止更新。

修改 我被要求编辑这个问题,以说明它与应该是同一个问题的区别。 我想指出的是,作为重复提供的答案和问题与我的问题中的问题太不一样了。 我在页面上浏览时执行了php代码,并且我已经更改了变量。现在,在答案之后,我在头版上也改变了它们,并且它们不是&#34;硬编码&#34;,无论那意味着什么。

1 个答案:

答案 0 :(得分:0)

此行不会在ajax调用之间发生变化:

$("#page_header_cont").html(" Last activity: " + "<?php echo date('Y-m-d H:i:s',$_SESSION['LAST_ACTIVITY']) ?>"

你应该用你在ajax响应中收到的数据替换php代码。

要设置初始值,您可以&#34;写&#34;一个javascript变量,并从$(document).ready();

中获取值

为此,可以在正文的底部设置:

<script>
var myPhpVrs = {"lastActiviy" : "<?php echo date('Y-m-d H:i:s',$_SESSION['LAST_ACTIVITY']) ?>"};
</script>

然后你可以从myPhpVrs.lastActivity获取初始值,以及从ajax响应中获得任何更新。

备注:Consder转义php代码以避免javascript注入。