这是问题所在。我需要使用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>
这不起作用,“成功”运行正常,但会话变量保持不变。可能是什么问题?
答案 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");
?>