在AJAX调用时清空$ _SESSION直到刷新

时间:2016-10-18 23:59:09

标签: javascript php jquery ajax session

虽然我在页面的开头设置了$_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返回一个空数组。这是一个屏幕截图:

enter image description here

如果我再次按“点击”,那么我仍会得到相同的结果。

现在让我惊讶的是,当我按“F5”并重新加载页面,然后按“Click”时,数组不再为空。这是一个屏幕截图:

enter image description here

如果我关闭浏览器,重新打开它,然后按“点击”,则阵列再次为空。

我注意到的另一件事情如下:如果我创建一个新文件 sessionFile2.php 并将 sessionFile.php 中的内容复制到其中,并包含 sessionFile2.php ,然后令人惊讶的是ajax数组永远不会为空。如果我再次包含 sessionFile.php 而不是 sessionFile2.php 我有同样的旧错误。这仅在我创建新文件并复制其内容时才有效。如果我只包含文件 sessionFile.php 的副本,那么$_SESSION数组将再次为空。我不知道为什么会这样,因为两个文件都拥有相同的所有者和相同的chmod。

enter image description here

如果有人能帮助我解决这里发生的事情,我会很高兴。

0 个答案:

没有答案