php - 使用 AJAX 请求更新会话变量
问题描述
这是问题所在。我需要使用 AJAX 请求调用“reset.php”脚本并将会话变量重置为初始值。现在,它看起来像这样:
索引.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>
重置.php
<?php session_start();
$_SESSION['var'] = 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");
?>