的index.php
<?php
session_start();
?>
<script>
function sessionUpdate()
{
//Do a get ajax call that send the 2 parameters to updateSession.php
}
</script>
<?php
$_SESSION['foo'] = "foo";
$_SESSION['bar'] = "bar";
echo"<div>";
echo"<p onclick="sessionUpdate()>Update Session</p>";
echo"{$_SESSION['foo']} {$_SESSION['bar']}";
echo"</div>";
?>
updateSession.php
<?php
session_start();
$_SESSION['foo'] = "new foo";
$_SESSION['bar'] = "new bar";
?>
现在,会话在网站上使用,因此我不能仅使用innerHTML = data.responseText替换示例div中ajax调用的信息;在那个地方。无论如何,当我这样做时,foo和bar会话的回声不会改变,它们只是静态变量,如果没有页面重新加载就无法更改或者是什么问题?
答案 0 :(得分:2)
据我所知,你打开index.php
,示例div包含会话变量的默认值(在你的例子中是'foo bar')。单击“更新会话”后,执行innerHTML=data.responseText
可以查看更新的会话值(根据示例,“新foo新栏”)。但是在你重新加载index.php后 - 它再次显示'foo bar'。根据您的代码,您不会检查是否应设置默认会话变量。尝试在index.php中替换
<?php
$_SESSION['foo'] = "foo";
$_SESSION['bar'] = "bar";
echo"<div>";
用
<?php
if(!isset($_SESSION['foo']))
$_SESSION['foo'] = "foo";
if(!isset($_SESSION['bar']))
$_SESSION['bar'] = "bar";
echo"<div>";
更新的代码将检查是否设置了会话变量(用户在第一次打开index.php)。一旦未设置 - 将分配默认值,但一旦完成,它将不会覆盖任何将来的更改(因此,在设置ajax调用foo和bar变量并且您的代码不会重写其值之后)