我遇到问题$_SESSION
AJAX 请求上的超级全局。
session_start()
函数在任何会话编码之前调用。调用代码和AJAX响应代码中的Session ID也是相同的(通过echoing测试session_id()
在两个脚本中)。 AJAX PHP 文件位于同一域中。一切都应该按照标准定义进行,但是当我这样做时print_r($_SESSION)
在我得到的调用的 AJAX 脚本文件中Arrray( )
output.
我已经碰壁了...我不知道为什么这不起作用...
在 Chrome 和 Firefox 中都进行了检查。
有任何想法吗?
UPDATE:
问题在于$.ajax(...)
要求!当我执行 AJAX 请求时,它知道正确的会话 ID,并且session_start()
函数返回TRUE
(成功继续会话)但随后它重置了我的$_SESSSION
超全球!它清空了...我还不知道为什么...
Code:
索引.php:
<?php
session_start();
$_SESSION['Test']='O.K.';
echo("SESSION_ID: " . session_id());
echo("SESSION_SIZE:" . sizeof($_SESSION));
?>
... Standard HTML stuff and jQuery include ...
<script>
$.ajax(
{
type: "POST",
url: "AJAXTest.php",
data: null,
success: function(sData) { alert(sData); }
});
</script>
AJAXTest.php:
<?php
session_start();
echo("SESSION_ID: " . session_id());
echo("SESSION_SIZE:" . sizeof($_SESSION));
?>
index.php 输出:
SESSION_ID: xxxxxxxxxxxxxxxxxxxxxxx
SESSION_SIZE: 1
警报输出:
SESSION_ID: xxxxxxxxxxxxxxxxxxxxxxx (right session id)
SESSION_SIZE: 0
AJAX 调用后 $_SESSION 为空。在具有相同会话的所有其他脚本中......我很困惑......