假设我有一个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";
?>