在codeigniter中有条件地设置会话数据

Nis*_*ani 1 javascript session jquery codeigniter

我想在我的视图中设置我的会话数据但有条件,所以在我的视图的javascript部分我有

$('#demo').click(function(){
$this->session->set_userdata('sample',10);
});
Run Code Online (Sandbox Code Playgroud)

但是,每当我刷新页面,而不点击按钮,会话数据,"样本"被设置,有没有办法,我可以在我点击按钮后获得此会话数据集?

谢谢

Fra*_*ona 6

您正在混合使用Javascript和PHP(客户端和服务器端).您可以使用这样的Ajax来实现:

$('#demo').click(function(){
  $.ajax({
     type: "POST",
     url: "mycontroller/sessions"
   }).done(function( msg ) {
     alert( "Data Saved: " + msg );
   });
});
Run Code Online (Sandbox Code Playgroud)

在您的Mycontroller.php文件中,您应该创建一个名为"sessions"的函数:

function sessions(){
   $this->session->set_userdata('sample',10);
}
Run Code Online (Sandbox Code Playgroud)

如果您需要将信息从Javascript传递到PHP:

var dummy = 10;
$('#demo').click(function(){
   $.ajax({
      type: "POST",
      url: "mycontroller/sessions",
      data: { value: dummy }
   }).done(function( msg ) {
      alert( "Data Saved: " + msg );
   });
});


function sessions($value){
   $this->session->set_userdata('sample',$value);
}
Run Code Online (Sandbox Code Playgroud)

有关JQuery中Ajax的更多信息,请访问http://api.jquery.com/jQuery.ajax/

编辑:

要检查CodeIgniter中是否存在会话变量:

function sessions(){
   $sId = $this->session->userdata('session_id');
   if(isset($sId)){
      // session_id exist
   }
}
Run Code Online (Sandbox Code Playgroud)

"检索会话数据"部分http://codeigniter.com/user_guide/libraries/sessions.html