使用AJAX请求更新会话变量

时间:2019-01-15 13:54:36

标签: php jquery ajax session

这是问题所在。我需要使用AJAX请求调用“ reset.php”脚本,并将会话变量重置为初始值。 现在,它看起来像这样:

index.php:

const values = [[1],["a"],,["b"],[""],["c"]];
const noBlankValues = values.flat().filter(a => a !== null && a !== "");
console.log(noBlankValues);

reset.php

<?php session_start();
    $_SESSION['var'] = 0;
    $_SESSION['var'] = 1;
?>
<button>reset</button>
<script type="text/javascript">
    $("button").click(function() {
        $.ajax({
            type: "GET",
            url: "reset.php",
            success: function(){
                    //some function
                }
            });         
    });
</script>

这不起作用,“成功”运行正常,但会话变量保持不变。可能是什么问题?

1 个答案:

答案 0 :(得分:0)

仅在首次呈现页面时读取会话变量。 AJAX请求完全不会影响。如果您需要读取更新后的值(在您刚刚进行调用以设置显式值时这有点多余),则将数据返回给AJAX请求。话虽这么说,您似乎对客户端和服务器端逻辑之间的差异有些困惑。我建议在该领域进行一些研究。 –正如Rory McCrossan在评论中所说。

    <?php session_start();
        if(isset($_SESSION['var'])) {
              $_SESSION['var'] = 0;
        }else {
            $_SESSION['var'] = 1;
            }
        ?>
        <button>reset</button>
        <script type="text/javascript">
            $("button").click(function() {
                $.ajax({
                    type: "GET",
                    url: "reset.php",
                    success: function(res){
                            alert(res);
    if(res) { 
    location.reload();  // but AJAX means without reload                        
     //<?  $_SESSION['var']; ?> = res; will not work            
    // you cannot set PHP value here, you need to do it with javascript if you want to set the value anywhere on this page

}
                        }
                    });         
            });
        </script>

您的php

<?php session_start();
    $_SESSION['var'] = 0;
    echo  $_SESSION['var'];
?>

您可以使用重定向

<?php session_start();
        $_SESSION['var'] = 0;
       header("url of the above page");
    ?>