想要更改 SESSION 变量“fullname”的值而不刷新页面。
我使用ajax的实现:
第 1 页 html:
<input type="text" name="fullname" id="fullname" placeholder="Full name">
<button onclick="setSession()"> GO </button>
第 1 页脚本:
<script>
function setSession(){
var fullname = $("#fullname").val();
var dataString = 'fullname=' + fullname;
$.ajax({
type: "POST",
url: "Page2.php",
data: dataString,
cache: false,
success: function( data ) {
if(data === 'True'){
alert("<?php echo $_SESSION['fullname'];?>");
}
}
});
}
</script>
第 2 页:
session_start();
$_SESSION["fullname"] = $_POST["fullname"];
echo 'True';
exit();
它不会更改 session 变量的值。
两个页面都有session_start()。
最佳答案
您的代码应该已经在更改 PHP session 中的值。您只是没有正确设置客户端脚本来显示这一点。
在 PHP 脚本中返回某种指示器:
<?php
// Page2.php
session_start();
$_SESSION["fullname"] = $_POST["fullname"];
echo 'set session fullname to ' . $_POST['fullname'];
然后在 AJAX 成功函数中显示该响应:
...
success: function( response ) {
alert(response);
}
...
当您使用alert("<?php echo $_SESSION['fullname'];?>");
时在您的成功函数中,PHP 将填写 $_SESSION['fullname']
页面加载时,警报框中的值会出现一次,并且在重新加载页面之前它永远不会改变,即使您通过 AJAX 成功更新了 session 值。
关于javascript - 使用ajax设置PHP session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46894940/