【问题标题】:PHP Sessions null in an ajax callajax 调用中的 PHP 会话为空
【发布时间】:2015-10-01 13:27:00
【问题描述】:

我有一个设置一些会话值的 PHP 页面:

session_start();
$_SESSION["key"] = "myvalue";

该值已设置,如果我在浏览器中打开我的文件 sessions.php 的新选项卡,我会看到之前设置的值。

<?php
    if(!session_id()) {    // check if we have session_start() called
        session_start(); 
        echo  "<br />session start"; 
    }

    if (!isset($_SESSION["key"]) ) {
        echo  "<br />session null"; 
    } else {
        echo "ok my session" . $_SESSION["key"] ; 
    }   
?>

如果我从另一个页面打开同一个文件,在同一个选项卡中通过 AJAX 在同一个域同一个文件夹中,我有空会话。

$.ajax({
    type: "POST",   
    url: "/php/sessions.php",
    cache: false,
    error: function (XMLHttpRequest, textStatus, errorThrown) {}
}).done(function(msg) {
    alert(msg) // I get session null
});

编辑: 我正在使用 php-5.6.10-nts-Win32-VC11-x64 和 IIS

EDIT2: 我意识到进行 Ajax 调用的中间页面在同一个域中。所以这就是为什么 Imy 会话为空

【问题讨论】:

  • 我没有看到任何将bcc 键设置为$_SESSION 的内容。
  • 你使用的是哪个php版本?
  • @AjeetKumar PHP 版本和这个有什么关系?
  • /php/sessions.php 是否以某种方式回显 $_SESSION["key"]?
  • 抱歉@JonStirling bcc 只是我忘记更改的内容。

标签: php jquery ajax session


【解决方案1】:

你显然忘了回应

session_start();
$_SESSION["key"] = "myvalue";
echo $_SESSION["key"];

所以你的文件有一些输出到 ajax

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-10
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 2014-04-24
    • 2011-04-09
    • 2011-08-17
    相关资源
    最近更新 更多