虽然我在页面的开头设置了$_SESSION
变量,但我的问题是我的$_SESSION
数组在ajax调用中为空。
由于某些原因,当我刷新页面或创建另一个ajax文件时,$_SESSION
数组 __ not __ 为空。我不明白这里发生了什么。
以下是我的最小例子:
test.php的
<?php
include 'sessionFile.php';
print_r($_SESSION);
?><!DOCTYPE html>
<html>
<head>
</head>
<body >
<button id="myButt">Click</button>
<div id='memberSearchContent'> </div>
</body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(document).ready(function(){
$('#myButt').click(function(){
request = $.ajax({
url: "ajax.php",
type: "post",
dataType: "html"
});
// Callback handler that will be called on success
request.done(function (data, textStatus, jqXHR){
$('#memberSearchContent').html(data);
});
});
});
</script>
</html>
sessionFile.php
<?php
session_start();
$_SESSION['lang'] = "3";
ajax.php
<?php
session_start();
print_r($_SESSION);
当我加载test.php并按“Click”时,ajax.php返回一个空数组。这是一个屏幕截图:
如果我再次按“点击”,那么我仍会得到相同的结果。
现在让我惊讶的是,当我按“F5”并重新加载页面,然后按“Click”时,数组不再为空。这是一个屏幕截图:
如果我关闭浏览器,重新打开它,然后按“点击”,则阵列再次为空。
我注意到的另一件事情如下:如果我创建一个新文件 sessionFile2.php 并将 sessionFile.php 中的内容复制到其中,并包含 sessionFile2.php ,然后令人惊讶的是ajax数组永远不会为空。如果我再次包含 sessionFile.php 而不是 sessionFile2.php 我有同样的旧错误。这仅在我创建新文件并复制其内容时才有效。如果我只包含文件 sessionFile.php 的副本,那么$_SESSION
数组将再次为空。我不知道为什么会这样,因为两个文件都拥有相同的所有者和相同的chmod。
如果有人能帮助我解决这里发生的事情,我会很高兴。