Php 代码点火器+;ajax(jQuery)会话问题

Php 代码点火器+;ajax(jQuery)会话问题,php,jquery,ajax,session,codeigniter,Php,Jquery,Ajax,Session,Codeigniter,我在服务器端使用ajax post请求检索会话时遇到问题。以下是我的示例代码: JavaScript: $(function() { $('.jid_hidden_data').submit(function() { var serialized = $(this).serialize(); var sUrl = "http://localhost/stuff"; $.ajax({ url: sUrl,

我在服务器端使用ajax post请求检索会话时遇到问题。以下是我的示例代码:

JavaScript:

$(function() {
    $('.jid_hidden_data').submit(function() {
        var serialized = $(this).serialize();
        var sUrl = "http://localhost/stuff";
        $.ajax({
            url: sUrl,
            type: "POST",
            data: serialized,
            success: function(data) {
                alert(data);
            }
        })
        return false;
    });
});
编码器(PHP)端:

如果commented返回NULL,它应该返回用户会话数据,因为它确实存在。有什么问题?Method post没有收到cookies还是什么?谢谢你的帮助

更新:

为了澄清,我用$this->session->set\u userdata($data)设置了会话。
在没有js/ajax的情况下发布时,我没有问题。我的意思是,使用纯表单提交可以很好地工作。

当使用不同的域名访问CI应用程序时,我遇到了类似的问题。尽管这些域名指向同一个web服务器,但我有两个单独的会话

例如,考虑这个控制器:

class User extends Controller
{
    function User()
    {
        parent::Controller();
        $this->load->library('session');
    }

    function login()
    {
        $this->session->set_userdata('login_token', true);
        echo 'finished logging in';
    }

    function logout()
    {
        $this->session->unset_userdata('login_token');
        echo 'finished logging out';
    }

    function status()
    {
        if ($this->session->userdata('login_token'))
        {
            echo 'logged in';
        }
        else
        {
            echo 'not logged in';
        }
    }
}
我按顺序访问以下URL。每个URL旁边都有相应的输出:

“已完成登录”

“已登录”

“未登录”

因此,我在localhost上访问应用程序时的会话不会延续到127.0.0.1,即使我使用的是同一个web服务器


您的AJAX脚本中URL的域名是否与您正在测试的URL的域名不同?

当使用不同的域名访问CI应用程序时,我遇到了类似的问题。尽管这些域名指向同一个web服务器,但我有两个单独的会话

例如,考虑这个控制器:

class User extends Controller
{
    function User()
    {
        parent::Controller();
        $this->load->library('session');
    }

    function login()
    {
        $this->session->set_userdata('login_token', true);
        echo 'finished logging in';
    }

    function logout()
    {
        $this->session->unset_userdata('login_token');
        echo 'finished logging out';
    }

    function status()
    {
        if ($this->session->userdata('login_token'))
        {
            echo 'logged in';
        }
        else
        {
            echo 'not logged in';
        }
    }
}
我按顺序访问以下URL。每个URL旁边都有相应的输出:

“已完成登录”

“已登录”

“未登录”

因此,我在localhost上访问应用程序时的会话不会延续到127.0.0.1,即使我使用的是同一个web服务器


您的AJAX脚本中URL的域名是否与您正在测试的URL的域名不同?

您如何知道它的存在?数据是在cookie中还是在会话中?它在登录后设置为这样$this->session->set\u userdata($data)。另外,我在没有js/ajax的情况下发布它时没有问题,但是使用纯表单提交。我们可以看到您是如何向ajax请求提供数据的吗?您如何知道它的存在?数据是在cookie中还是在会话中?它在登录后设置为这样$this->session->set\u userdata($data)。另外,我在没有js/ajax的情况下发布它时没有问题,但是使用纯表单提交。我们可以看看您是如何向ajax请求提供数据的吗?是的,这是我遇到的问题。虽然在你回答之前就解决了。无论如何,非常感谢!:)我也遇到了同样的问题,在与Sessions、CSRF等进行了三天的斗争之后,我终于读到,在我的jQueryAjax请求中将“localhost”更改为127.0.0.1,问题神奇地消失了+是的,这是我遇到的一个问题。虽然在你回答之前就解决了。无论如何,非常感谢!:)我也遇到了同样的问题,在与Sessions、CSRF等进行了三天的斗争之后,我终于读到,在我的jQueryAjax请求中将“localhost”更改为127.0.0.1,问题神奇地消失了+上一个答案是100。