Codeigniter + Ajax(jQuery)会话问题 - php

我在使用ajax发布请求的服务器端检索会话中遇到问题。这是我的示例代码:

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;
    });
});

CodeIngiter(PHP)方面:

function stuff()
{
     $post_stuff = $this->input->post('my_stuff');     // WORKS PERFECTLY
     $user_id = $this->session->userdata('user_id');   // RETURNS NULL
}

在注释返回NULL的地方,它应该返回用户会话数据,因为它确实存在。问题是什么?方法发布没有Cookie或什么?谢谢你的帮助!

更新:

为了澄清起见,我使用$ this-> session-> set_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旁边是相应的输出:

http://localhost/app/user/login“登录完成”

http://localhost/app/user/status“已登录”

http://127.0.0.1/app/user/status“未登录”

因此,即使我要访问同一台Web服务器,我在localhost上访问该应用程序时所拥有的会话也不会延续到127.0.0.1。

您的AJAX脚本中的URL域名可能与您要测试的URL的域名不同吗?

jQuery Ajax PHP重定向到另一个页面 - php

JavaScript文件:$.ajax({ type: "POST", url: "ajax.php", data: dataString, success: function(r) { $("#div").html(r); } }); 我想在成功的情况下将页面重定向到new.php,所以在我使用a…

jQuery AJAX fadeIn内容 - php

This question already has answers here: Closed 7 years ago. Possible Duplicate: Making my ajax updated div fade in我希望将AJAX调用中的内容发送到页面上的fadeIn,但是当我使用此代码$('#sub_container')…

jQuery Ajax问题 - php

在我的post.php中,我使用$ .ajax函数从其他文件加载一些html数据,将其称为form.html。我的问题是当添加到post.php的DOM中时,form.html是否可以访问post.php的POST / GET数据? 参考方案 为什么不使用$ .ajax发布到php文件,该文件返回html数据。这样,您可以在html中填写发布的数据。

有没有一种方法可以使ajax请求始终按顺序进行? - php

我目前正在做的是使用jQuery在每个按键上执行ajax请求。因此,如果我的用户键入d-o-n-k-e-y,它将为每个字母发送一个请求。但是,由于它们采用不同的路径到达网络上的服务器,因此如果输入d-o-n-k-e-y的速度太快,它们就不会总是按顺序到达。他们可能会以D-n-o-k-y-e的身份到达,并做出相应的反应。有没有一种好的方法来确保所有请求都按顺序…

jQuery Ajax和php类 - php

我正在尝试学习如何在php中使用oop。我对jQuery也很陌生。是否可以向php类方法发出Ajax请求?我只将Ajax请求发送到专门用于此目的的文件,并且返回我需要的数据。 参考方案 简短答案:不可以。长答案:Ajax只是一个使用JavaScript从浏览器发出HTTP请求而无需离开页面的术语。您唯一可以“呼叫”的是URL。您可以编写PHP以根据URL来执…