通过javascript函数取消设置php数组元素


Unset a php array element via javascript function?

假设我有一个php会话数组:

$_SESSION[MyItems]=Array('A'=>"Apple", 'B'=>"Brownie", 'C'="Coin"))

用于在用户访问的页面上显示项目,我希望用户能够使用客户端 JavaScript 函数从显示中删除一个或多个项目(即隐藏项目或将div 更改为显示=无...我现在知道如何做这种事情。而不是涉及返回服务器/页面重新加载的行程。

当 javascript 从视图中删除项目时,如何同时从 $_SESSION[MyItems] 数组中删除该项目(即,如果页面重新加载,它不会重新出现?

我认为该任务可能涉及将整个$_SESSION[MyItems]数组转换为 javascript 数组,从中删除项目,然后让数组的 javascript 版本以某种方式覆盖$_SESSION[MyItems]。 这可行吗?

所有会话数据都存储在 cookie 中,客户端和服务器都可以访问 cookie。因此,您当然可以通过编辑cookie来执行此操作,但应避免并you should not do this这种做法,因为会话仅适用于服务器端。

希望对:)有所帮助

这不是那么简单,因为 PHP 在服务器端运行,PHP 的$_SESSION对象在运行 JavaScript 的客户端不可用。

您需要在模板的头部放置这样的东西(假设它是一个包含HTML内容的.php文件):

<html>
    <head>
        ...
        <script type="text/javascript">
            //parse PHP to json-string for javascript initialisation
            var MyItems = <?php echo json_encode ($_SESSION[MyItems], true); ?>;
        </script>
    </head>
    <body></body>
</html>

然后,您将拥有JavaScript中名为MyItems的PHP $_SESSION对象的副本。但是对 JS 对象所做的更改不会保存到 PHP 对象中。为此,您可以使用JQuery的$.post:

$.post ("target.php", { "MyItems": JSON.stringify (MyItems) }, function (result) {
    if (result == "true")
        //do something
    else
        //do something else
});

您的target.php文件如下所示:

<?php
    $_SESSION['MyItems'] = json_decode ($_POST['MyItems']);
    echo "true";
?>