想要更改SESSION变量的值" fullname"没有刷新页面。
我使用ajax实现:
Page 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_start()。
答案 0 :(得分:2)
其次,您正在远程页面中启动会话。在重新加载当前页面之前,该会话数据将无法在当前页面中使用。另外,你的警报中有一些不稳定的引用,它应该是:
alert("<?php echo $_SESSION['fullname'];?>");
答案 1 :(得分:1)
您的代码应该已经在更改PHP会话中的值。您只是没有正确设置客户端脚本来显示。
在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成功更新会话值。
答案 2 :(得分:0)
您正在使用PHP内联编码在JS中设置变量。但是,如果没有设置帖子,您可以在第2页中回显会话变量。如果您在没有任何帖子的情况下请求第二页,则可以使用JS中的响应主体来获取当前设置的会话变量并将其放入JS变量中。
Var name;
$.get(‘page2.php’, function(data){ name = data; } );
我正在使用iOS应用程序,因此上面的代码并不完整,但可以说明可以做些什么。
答案 3 :(得分:0)
<input type="text" name="fullname" id="fullname" placeholder="Full name">
<button onclick="setSession()"> GO </button>
<script>
function setSession(){
$.ajax({
type: "POST",
url: "Page2.php",
data: { fullname: $("#fullname").val() },
dataType: "json",
cache: false,
success: function( data ) {
alert(data.fullname);
}
});
}
</script>
session_start();
$_SESSION["fullname"] = $_POST["fullname"];
echo json_encode(array('fullname' => $_SESSION['fullname']));
将服务器端和客户端脚本混合在一起通常是一个坏主意,因此请尝试分离PHP和Javascript逻辑。它们都在页面请求生命周期的不同时间/阶段执行。