Php jquery ajax未创建会话

Php jquery ajax未创建会话,php,jquery,ajax,facebook,codeigniter,Php,Jquery,Ajax,Facebook,Codeigniter,我正在使用Codeigniter 3.1.2,并试图在我的应用程序中实现Facebook登录。当用户登录并授权我的应用程序时,我想在数据库中保存一些用户信息,然后创建会话 除创建会话外,所有工作正常,这就是用户在成功授权我的应用后未登录到我的应用的原因 点击FB登录按钮,触发以下代码 FB.login(function (response) { if (response.status === 'connected') { var site_url = $(

我正在使用Codeigniter 3.1.2,并试图在我的应用程序中实现Facebook登录。当用户登录并授权我的应用程序时,我想在数据库中保存一些用户信息,然后创建会话

除创建会话外,所有工作正常,这就是用户在成功授权我的应用后未登录到我的应用的原因

点击FB登录按钮,触发以下代码

FB.login(function (response) {
        if (response.status === 'connected') {
            var site_url = $('#site_url').val();
            $.ajax({
                url: site_url + 'weapons/register',
                type: 'post',
                data: {
                    email: response.email
                }
            });
            window.location.href = '<?php echo site_url_tr('profile'); ?>';
        }
    }, {scope: 'public_profile,email'});
FB.登录(功能(响应){
如果(response.status===“已连接”){
var site_url=$('#site_url').val();
$.ajax({
url:site_url+“武器/注册”,
键入:“post”,
数据:{
电子邮件:response.email
}
});
window.location.href='';
}
},{scope:'public_profile,email'});
这是我的注册方法

public function register() {
        $email = $this->input->post('email');
        $user = array(
            'email' => $email
        );
        $u = $this->pm->total_item('users', 'email', $email);
        if ($u < 1) {//if user not exist then create
            $this->db->set('reg_date', 'NOW()', FALSE);
            $user_id = $this->pm->insert_data('users', $user, TRUE);
        }else{
            $user = $this->pm->get_row('email', $email,'users');
            $user_id = $user['id'];
        }
        $user_data = array(
            'user_id' => $user_id,
            'username' => $email,
            'email' => $email,
            'user_type' => 'user'
        );
        $this->session->set_userdata($user_data);
    }
公共函数寄存器(){
$email=$this->input->post('email');
$user=array(
'email'=>$email
);
$u=$this->pm->total_项目('users'、'email'、$email');
如果($u<1){//如果用户不存在,则创建
$this->db->set('reg_date','NOW()',FALSE);
$user\u id=$this->pm->insert\u data('users',$user,TRUE);
}否则{
$user=$this->pm->get_行('email',$email,'users');
$user_id=$user['id'];
}
$user\u data=数组(
'user\u id'=>$user\u id,
“用户名”=>$email,
“email”=>$email,
“用户类型”=>“用户”
);
$this->session->set_userdata($user_data);
}
$this->session->set\u userdata($user\u data)所以这是我试图创建会话的尝试,但它不起作用。并且不从上面的my
JS
code重定向到
Profile
controller。谢谢

我已经自动加载了
会话
库和驱动程序。知道我该怎么做吗 用户授权我的应用程序时创建会话(通过Codeigniter) 欢迎光临

  • 确保包括
    $this->load->library('session')在您的文件中或自动加载它

  • Ajax调用是异步的:在您有机会完成请求之前,您正在重定向

    $.ajax({ //参数 }).done(函数(){ //重定向到这里 });


  • 希望有帮助。

    是的,我已经自动加载了会话库和驱动程序。在
    done
    nothing happendusly response.status中也尝试了重定向。status包含一个代码(200表示成功,404未找到..),可能来自那里。我认为您应该在客户端上的if变量之前使用console.log(response)。这是我的
    response
    is
    Object{authResponse:Object,status:“connected”}
    类型:“Post”
    应该是
    方法:“Post”
    我们是否能从服务器获得任何反馈,告诉我们请求是否通过?停止假设。如果你知道,那么评论/回答。你所说的都是在异步问题上什么都没做过的部分-站点url包含什么?如果其中包含使请求跨域的任何值,则除非您添加
    with credentials
    标志,否则不会随请求发送cookie。@CBroe
    site\u url
    此处
    http://localhost/project_name/